• 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 }

     

     

  • 相关阅读:
    防火墙(Iptables NAT)
    zookeeper-分布式协调技术的搭建
    Cobbler 自动安装 配置
    GPG非对称加密
    服务管理--Nginx
    NTP时间服务器
    Javascript-数据类型、类型转换
    移动端计算页面尺寸
    javascript 给关键字加链接
    JS三元运算符
  • 原文地址:https://www.cnblogs.com/znjy/p/13556526.html
Copyright © 2020-2023  润新知