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());
                        }
            }
            }
        }
    }
        
    
    
 

猜你喜欢

转载自www.cnblogs.com/zlshy/p/12101615.html