zoukankan      html  css  js  c++  java
  • 4.3 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company (20分)

    4.3 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company (20分)
     

    定义Person抽象类,Student类、Company类,Employee类。

    Person类的属性String name, int age, boolean gender
    Person类的方法:

    public Person(String name, int age, boolean gender);
    public String toString();         //返回"name-age-gender"格式的字符串
    public boolean equals(Object obj);//比较name、age、gender,都相同返回true,否则返回false
    
    
     

    Student类继承自Person,属性:String stuNo, String clazz
    Student类的方法:

    //建议使用super复用Person类的相关有参构造函数
    public Student(String name, int age, boolean gender, String stuNo, String clazz);
    public String toString();         //返回 “Student:person的toString-stuNo-clazz”格式的字符串
    public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true,则继续比较stuNo与clazz。
    
     

    Company类属性:String name
    Company类方法:

    public Company(String name);
    public String toString();         //直接返回name
    public boolean equals(Object obj);//name相同返回true
    
     

    Employee类继承自Person,属性:Company company, double salary
    Employee类方法:

    //建议使用super复用Person类的相关有参构造函数
    public Employee(String name, int age, boolean gender, double salary, Company company);
    public String toString();         //返回"Employee:person的toString-company-salary"格式的字符串
    public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true。再比较company与salary。
    //比较salary属性时,使用DecimalFormat df = new DecimalFormat("#.#");保留1位小数
    
     

    编写equals方法重要说明:

    1. 对Employee的company属性的比较。要考虑传入为null的情况。如果company不为null且传入为null,返回false
    2. 对所有String字符类型比较时,也要考虑null情况。

    提示

    1. 排序可使用Collections.sort
    2. equals方法要考虑周全

    main方法说明

    1. 创建若干Student对象、Employee对象。
      输入s,然后依次输入name age gender stuNo clazz创建Student对象
      输入e,然后依次输入name age gender salary company创建Employee对象
      然后将创建好的对象放入List<Person> personList。输入其他字符,则结束创建。
      创建说明:对于String类型,如果为null则不创建对象,而赋值为null。对于company属性,如果为null则赋值为null,否则创建相应的Company对象。

    2. 对personList中的元素实现先按照姓名升序排序,姓名相同再按照年龄升序排序。提示:可使用Comparable<Person>Comparator<Person>

    3. 接受输入,如果输入为exitreturn退出程序,否则继续下面步骤。

    4. 将personList中的元素按照类型分别放到stuList与empList。注意:不要将两个内容相同的对象放入列表(是否相同是根据equals返回结果进行判定)。

    5. 输出字符串stuList,然后输出stuList中的每个对象。

    6. 输出字符串empList,然后输出empList中的每个对象。

    1-3为一个测试点 4-6为一个测试点

    输入样例:

    s zhang 23 false 001 net15
    e wang 18 true 3000.51 IBM
    s zhang 23 false 001 net15
    e bo 25 true 5000.51 IBM
    e bo 25 true 5000.52 IBM
    e bo 18 true 5000.54 IBM
    e tan 25 true 5000.56 IBM
    e tan 25 true 5000.51 IBM
    s wang 17 false 002 null
    s wang 17 false 002 null
    e hua 16 false 1000 null
    s wang 17 false 002 net16
    e hua 16 false 1000 null
    e hua 18 false 1234 MicroSoft
    !
    continue
    
     

    输出样例:

    Employee:bo-18-true-IBM-5000.54
    Employee:bo-25-true-IBM-5000.51
    Employee:bo-25-true-IBM-5000.52
    Employee:hua-16-false-null-1000.0
    Employee:hua-16-false-null-1000.0
    Employee:hua-18-false-MicroSoft-1234.0
    Employee:tan-25-true-IBM-5000.56
    Employee:tan-25-true-IBM-5000.51
    Student:wang-17-false-002-null
    Student:wang-17-false-002-null
    Student:wang-17-false-002-net16
    Employee:wang-18-true-IBM-3000.51
    Student:zhang-23-false-001-net15
    Student:zhang-23-false-001-net15
    stuList
    Student:wang-17-false-002-null
    Student:wang-17-false-002-net16
    Student:zhang-23-false-001-net15
    empList
    Employee:bo-18-true-IBM-5000.54
    Employee:bo-25-true-IBM-5000.51
    Employee:hua-16-false-null-1000.0
    Employee:hua-18-false-MicroSoft-1234.0
    Employee:tan-25-true-IBM-5000.56
    Employee:tan-25-true-IBM-5000.51
    Employee:wang-18-true-IBM-3000.51



    import java.text.DecimalFormat;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Scanner;
    
    class Person{         
            private String name = null;
            private int age = 0;
            private boolean gender = false; 
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public int getAge() {
                return age;
            }
    
    
            public void setAge(int age) {
                this.age = age;
            }
    
    
            public boolean isGender() {
                return gender;
            }
    
    
            public void setGender(boolean gender) {
                this.gender = gender;
            }
    
    
            public Person(String n, int a, boolean g) {   
                this.name = n;
                this.age = a;
                this.gender = g;
            }
               
    
            @Override
            public String toString() {
                return  name+"-"+age+"-"+gender ;
            }
    
            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;
                if (obj == null)
                    return false;
                if (getClass() != obj.getClass())
                    return false;
                Person other = (Person) obj;
                if (age != other.age)
                    return false;
                if (gender != other.gender)
                    return false;
                if (name == null) {
                    if (other.name != null)
                        return false;
                } else if (!name.equals(other.name))
                    return false;
                return true;
            }
            
    }
        
        class Student extends Person{
            String stuNo; String clazz;
            public Student(String n, int a, boolean g,String stuNo, String clazz) {
                super(n, a, g);
                this.stuNo=stuNo;
                this.clazz=clazz;
                // TODO Auto-generated constructor stub
            }
            @Override
            public String toString() {
                return super.toString()+"-"+stuNo+"-"+clazz ;
            }
    
            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;
                if (!super.equals(obj))
                    return false;
                if (getClass() != obj.getClass())
                    return false;
                Student other = (Student) obj;
                if (clazz == null) {
                    if (other.clazz != null)
                        return false;
                } else if (!clazz.equals(other.clazz))
                    return false;
                if (stuNo == null) {
                    if (other.stuNo != null)
                        return false;
                } else if (!stuNo.equals(other.stuNo))
                    return false;
                return true;
            }
            
        }
        class Company{
            String name;
    
            public Company(String name) {
                this.name = name;
            }
    
            @Override
            public String toString() {
                return name;
            }
    
            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;
                if (obj == null)
                    return false;
                if (getClass() != obj.getClass())
                    return false;
                Company other = (Company) obj;
                if (name == null) {
                    if (other.name != null)
                        return false;
                } else if (!name.equals(other.name))
                    return false;
                return true;
            }
            
            
        }
        class Employee extends Person{
             int age; boolean gender; double salary; Company company;
    
    
            public Employee(String n, int age, boolean gender, double salary, Company company) {
                super(n, age, gender);
                this.age = age;
                this.gender = gender;
                this.salary = salary;
                this.company = company;
            }
    
    
            @Override
            public String toString() {
                return super.toString()+"-"+company+"-"+salary;
            }
            DecimalFormat df = new DecimalFormat("#.#");
            @Override
            public boolean equals(Object obj) {
                if(super.equals(obj)==true) {
                Employee other = (Employee)obj;
                if(this.company.toString()==null||other.company.toString()==null) {
                    return false;
                }
                String df1 = new DecimalFormat("#.#").format(this.salary);
                String df2 = new DecimalFormat("#.#").format(other.salary);
                if(this.company.toString().compareTo(other.company.toString())==0&&df1.compareTo(df2)==0) {
                    return true;
                }
            }
            return false;
            }
            
            
        }
        public class Main{
            public static void main(String[] args) {
                String name;
                 int age;
                 boolean gender;
                 String stuNo;
                 String clazz;
                 double salary; String company;
                Scanner sc=new Scanner(System.in);
                List<Person> personList=new ArrayList <>();
                ArrayList<Student> students = new ArrayList<Student>();
                ArrayList<Employee> employees = new ArrayList<Employee>();
                    
                while(true) {
                    String c =sc.next();
                    if(c.compareTo("s")==0) {
                         name=sc.next();
                          age=sc.nextInt();
                          gender=sc.nextBoolean();
                          stuNo=sc.next();
                          clazz=sc.next();
                        Person stu=new Student(name ,age ,gender ,stuNo ,clazz);
                        personList.add(stu);
                    }else if(c.compareTo("e")==0) {
                          name=sc.next();
                          age=sc.nextInt();
                          gender=sc.nextBoolean();
                          salary = sc.nextDouble();
                          company = sc.next();
                          Company company2 = new Company(company);
                          Person emp=new Employee(name, age, gender, salary, company2);
                          personList.add(emp);
                 }else {
                        personList.sort(Comparator.comparing(Person::getName).thenComparing(Person::getAge));    
                        for (int i=0;i<personList.size();i++) {
                            if (personList.get(i) instanceof Student) {
                                System.out.println("Student:"+personList.get(i).toString());
                            int flag = 0;
                            for(int j=0;j<students.size();j++) {
                                if(students.get(j).equals(personList.get(i))) {
                                    flag=1;
                                    break;
                                }
                            }
                            
                            if(flag == 0) {
                                students.add((Student) personList.get(i));
                            }
                            }else {
                                 System.out.println("Employee:"+personList.get(i).toString());
                                    int flag = 0;
                                    for(int j=0;j<employees.size();j++) {
                                        if(employees.get(j).equals(personList.get(i))) {
                                            flag = 1;
                                            break;
                                        }
                                    }
                            if(flag == 0) {
                                        employees.add((Employee)personList.get(i));
                                }
                                
                            }
                        }
                        String tempString = sc.next();
                        if(tempString.compareTo("exit")==0||tempString.compareTo("return")==0) {
                            return;
                        }
                           System.out.println("stuList");
                            for(int i=0;i<students.size();i++) {
                                System.out.println("Student:"+students.get(i).toString());
                            }
                            System.out.println("empList");
                            for(int i=0;i<employees.size();i++) {
                                System.out.println("Employee:"+employees.get(i).toString());
                            }
                }
                }
            }
        }
            
        
        
     
  • 相关阅读:
    Linux 使用Mycat实现读写分离(基于Mysql的读写分离)
    CentOS7安装GitLab、汉化、邮箱配置及使用
    ESXI6.7更换系统默认SSL证书和密钥
    nexus备份恢复
    负载均衡基本原理与lvs
    GitHub项目管理基本操作
    git 拉取远程分支到本地
    如何在Github中删除已有仓库或文件
    GitHub教程(二) 删除已有仓库
    下载 github 项目文件到本地方法
  • 原文地址:https://www.cnblogs.com/zlshy/p/12101615.html
Copyright © 2011-2022 走看看