• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
戈瑾
博客园    首页    新随笔    联系   管理    订阅  订阅
Java入门——day50
实验题

1.形状类

定义shape接口,包含两个抽象函数成员void setvalues() 和float area() ,由shape进行派生如下:

  • 矩形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个函数成员,完成数据成员值的设定和面积的计算;

  • 三角形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个函数成员,完成数据成员值的设定和面积的计算;

  • 正方形类,包含一个数据成员变量用于描述边长,float类型,重新定义上述两个函数成员,完成数据成员值的设定和面积的计算;

  • 圆形类,包含一个数据成员变量用于描述半径,float类型,重新定义上述两个函数成员,完成数据成员值的设定和面积的计算;

在主函数中定义对象,利用虚函数实现多态,依次分别输入矩形的底和高,三角形的底和高,正方形的边长,圆形的半径,若其中任何一个值小于等于0,则输出Set Value Error!,然后退出程序,对于之前已正确输入的数值计算相应形状的面积。

 

  1 import java.util.Scanner;
  2 //Shape接口
  3 interface Shape {
  4     public void setValues(float a, float b);
  5     public float area();
  6 }
  7 //矩形类
  8 class Rectangle implements Shape {
  9     private float height;
 10     private float weight;
 11     @Override
 12     public void setValues(float a, float b) {
 13         height = a;
 14         weight = b;
 15     }
 16     @Override
 17     public float area() {
 18         return height * weight;
 19     }
 20 }
 21 //三角形类
 22 class Triangle implements Shape {
 23     private float height;
 24     private float weight;
 25     @Override
 26     public void setValues(float a, float b) {
 27         height = a;
 28         weight = b;
 29     }
 30     @Override
 31     public float area() {
 32         return (height * weight) / 2;
 33     }
 34 }
 35 //正方形类
 36 class Square implements Shape {
 37     private float length;
 38     @Override
 39     public void setValues(float a, float b) {
 40         length = a;
 41     }
 42     @Override
 43     public float area() {
 44         return length * length;
 45     }
 46 }
 47 //圆形类
 48 class Circle implements Shape {
 49     private float radius;
 50     @Override
 51     public void setValues(float a, float b) {
 52         radius = a;
 53     }
 54     @Override
 55     public float area() {
 56         return radius * radius * 3.14f;
 57     }
 58 }
 59 
 60 public class Test {
 61     public static void main(String[] args) {
 62         Scanner in = new Scanner(System.in);
 63         Rectangle r = new Rectangle();
 64         Triangle t = new Triangle();
 65         Square s = new Square();
 66         Circle c = new Circle();
 67         float w1, h1, w2, h2, l, a;
 68         System.out.print("请输入矩形的底和高:");
 69         w1 = in.nextFloat();
 70         h1 = in.nextFloat();
 71         System.out.print("请输入三角形的底和高:");
 72         w2 = in.nextFloat();
 73         h2 = in.nextFloat();
 74         System.out.print("请输入正方形的边长:");
 75         l = in.nextFloat();
 76         System.out.print("请输入圆形的半径:");
 77         a = in.nextFloat();
 78         if (w1 > 0) {
 79             if (h1 > 0) {
 80                 r.setValues(w1, h1);
 81                 System.out.println("矩形面积:" + r.area());
 82             }
 83         }
 84         if (w2 > 0) {
 85             if (h2 > 0) {
 86                 t.setValues(w2, h2);
 87                 System.out.println("三角形面积:" + t.area());
 88             }
 89         }
 90         if (l > 0) {
 91             s.setValues(l, l);
 92             System.out.println("正方形面积:" + s.area());
 93         }
 94         if (a > 0) {
 95             c.setValues(a, a);
 96             System.out.println("圆的面积:" + c.area());
 97         }
 98         if (w1 <= 0 || h1 <= 0 || w2 <= 0 || h2 <= 0 || l <= 0 || a <= 0) {
 99             System.out.println("Set Value Error!");
100             System.exit(0);
101         }
102     }
103 }

 

 

 

 


 

 2.学生类

  • 定义描述学生的student类,包含受保护两个数据成员,分别是描述姓名的,string类型和描述学号的,int类型,构造函数有两个形参,用于设定这两个数据成员的值;

  • 由学生类派生本科生类understud,新增受保护数据成员,描述专业,string类型,构造函数具有三个形参;

  • 由本科生类派生研究生类poststud,新增私有数据成员,描述导师姓名,string类型,构造函数具有四个形参;

  • 学生姓名默认值为“***”,学号默认值为-1,专业默认值为“###”,导师姓名默认值为“&&&”;

在主函数中定义对象,定义开关变量,int型,通过输入进行赋值,若该值为0,则输出研究生对象的默认属性值,若非零,则依次输入姓名、学号、专业和导师信息,并依次打印出来。

 

 1 import java.util.Scanner;
 2 //学生类
 3 abstract class Student{
 4     protected String name; //姓名
 5     protected int ID;      //学号
 6     public Student() {
 7         this.name="***";
 8         this.ID=-1;
 9     }
10     public Student(String name,int ID) {
11         this.name=name;
12         this.ID=ID;
13     }
14     public void setNameID(String name,int ID) {
15         this.name=name;
16         this.ID=ID;
17     }
18     public void displayNameID() {
19         System.out.println("姓名:"+name);
20         System.out.println("学号:"+ID);
21     }
22     public abstract void setMajor(String str);
23     public abstract String getMajor();
24 }
25 //本科生类
26 class Understud extends Student{
27     private String major; //专业
28     public Understud() {
29         super();
30         this.major = "###";
31     }
32     public Understud(String name, int ID,String major) {
33         super(name, ID);
34         this.major=major;
35     }
36     public void setMajor(String str) {
37         major=str;
38     }
39     public String getMajor() {
40         return major;
41     }
42 }
43 //研究生类
44 class Poststud extends Understud{
45     private String advisor;  //导师
46     public Poststud() {
47         super();
48         this.advisor = "&&&";
49     }
50     public Poststud(String name,int ID,String major,String advisor) {
51         super(name, ID, major);
52         this.advisor=advisor;
53     }
54     public void setAdvisor(String str) {
55         advisor=str;
56     }
57     public String getAdvisor() {
58         return advisor;
59     }
60 }
61 public class Test {
62     public static void main(String[] args) {
63         Scanner in=new Scanner(System.in);
64         Poststud s=new Poststud();
65         int t,a;
66         String str1,str2,str3;
67         System.out.print("请输入整数t(t!=0时赋值):");
68         t=in.nextInt();
69         if(t==0) {
70             s.displayNameID();
71             System.out.println("专业:"+s.getMajor());
72             System.out.println("导师:"+s.getAdvisor());
73         }
74         else {
75             System.out.println("请依次输入姓名、学号、专业和导师:");
76             str1=in.next();
77             a=in.nextInt();
78             str2=in.next();
79             str3=in.next();
80             s=new Poststud(str1,a,str2,str3);
81             s.displayNameID();
82             System.out.println("专业:"+s.getMajor());
83             System.out.println("导师:"+s.getAdvisor());
84         }
85     }
86 }

 

 

 

 

posted on 2020-08-24 21:43  戈瑾  阅读(195)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3