欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company (20 分) ///答案,不包括解析

程序员文章站 2022-06-24 09:12:06
定义Person抽象类,Student类、Company类,Employee类。 Person类的属性:String name, int age, boolean genderPerson类的方法: Student类继承自Person,属性:String stuNo, String clazzStu ......
 

定义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.awt.list; import java.awt.texturepaint; import java.lang.reflect.array; import java.text.decimalformat; import java.util.arraylist; import java.util.arrays; import java.util.collections; import java.util.comparator; import java.util.scanner; import javax.naming.binaryrefaddr; import javax.security.auth.subjectdomaincombiner; import javax.sound.sampled.line; class person{ private string name; private int avg; private boolean gender; private string str; public person(string name, int avg, boolean gender,string str) { this.name = name; this.avg = avg; this.gender = gender; this.str = str; } public string tostring() { return name+"-"+avg+"-"+gender; } public boolean equals(object obj) { person aperson = (person)obj; if(aperson.name==null||this.name==null) { return false; } if(aperson.name.compareto(this.name)==0&&aperson.avg==this.avg&&aperson.gender==this.gender) { return true; } return false; } public string getname() { return name; } public int getavg() { return avg; } public string getstr() { return str; } public boolean getgender() { return gender; } } class student extends person { private string stuno; private string clazz; public student(string name, int avg, boolean gender, string str, string stuno, string clazz) { super(name, avg, gender, str); this.stuno = stuno; this.clazz = clazz; } public string tostring() { return super.tostring()+"-"+stuno+"-"+clazz; } public boolean equals(object obj) { student a = (student)obj; if(super.equals(obj)==true) { if(this.stuno==null|this.clazz==null||a.clazz==null||a.stuno==null) { return false; } if(this.clazz.compareto(a.clazz)==0&&this.stuno.compareto(a.stuno)==0) return true; } return false; } public string getstuno() { return stuno; } public string getclazz() { return clazz; } } class company{ private 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{ private company company; private double salary; public employee(string name, int avg, boolean gender, string str, company company, double salary) { super(name, avg, gender, str); this.company = company; this.salary = salary; } @override public string tostring() { return super.tostring()+"-"+company.tostring()+"-"+salary; } @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 company getcompany() { return company; } public double getsalary() { return salary; } } public class main { public static void main(string[] args) { // todo auto-generated method stub scanner sc = new scanner(system.in); string c; string namestring; int avg; boolean gender; arraylist<person> persons = new arraylist<person>(); arraylist<student> students = new arraylist<student>(); arraylist<employee> employees = new arraylist<employee>(); string tempstring; string stunostring; string company; string clazzstring; double salary; while(true) { c = sc.next(); if(c.compareto("s")==0) { namestring = sc.next(); avg = sc.nextint(); gender = sc.nextboolean(); stunostring = sc.next(); clazzstring = sc.next(); student tempstudent = new student(namestring, avg, gender, c, stunostring, clazzstring); persons.add(tempstudent); }else if(c.compareto("e")==0) { namestring = sc.next(); avg = sc.nextint(); gender = sc.nextboolean(); salary = sc.nextdouble(); company = sc.next(); company company2 = new company(company); employee tempemployee = new employee(namestring, avg, gender, c, company2, salary); persons.add(tempemployee); }else { persons.sort(comparator.comparing(person::getname).thencomparingint(person::getavg)); for(int i=0;i<persons.size();i++) { if(persons.get(i).getstr().compareto("s")==0) { system.out.println("student:"+persons.get(i).tostring()); int flag = 0; for(int j=0;j<students.size();j++) { if(students.get(j).equals(persons.get(i))) { flag=1; break; } } if(flag == 0) { students.add((student) persons.get(i)); } }else { system.out.println("employee:"+persons.get(i).tostring()); int flag = 0; for(int j=0;j<employees.size();j++) { if(employees.get(j).equals(persons.get(i))) { flag = 1; break; } } if(flag == 0) { employees.add((employee)persons.get(i)); } } } 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()); } } } } }