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());
                            }
                }
                }
            }
        }
            
        
        
     
  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    LeetCode Populating Next Right Pointers in Each Node
    LeetCode Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode Reverse Linked List II
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Pascal's Triangle
    Palindrome Construct Binary Tree from Preorder and Inorder Traversal
    Pascal's Triangle II
    LeetCode Word Ladder
    LeetCode Binary Tree Zigzag Level Order Traversal
  • 原文地址:https://www.cnblogs.com/zlshy/p/12101615.html
Copyright © 2011-2022 走看看