Java子类父类继承联系题目(PTA-HDU)

6-1 jmu-Java-03面向对象基础-覆盖与toString

Person类,Company类,Employee类。

其中Employee类继承自Person类,属性为:

private Company company;
private double salary;

现在要求编写Employee类的toString方法,返回的字符串格式为:父类的toString-company的toString-salary

函数接口定义:

public String toString()

输入样例:

输出样例:

Li-35-true-MicroSoft-60000.0

Code:

public String toString(){
    return super.toString()+'-'+company.toString()+'-'+salary;
}

###

6-2 jmu-Java-03面向对象基础-Object

输入整数n,创建n个对象,放入同一个数组中。

如果输入c,则new Computer(); //注意:Computer是系统中已有的类,无需自己编写

如果输入d,则根据随后的输入创建Double类型对象。

如果输入i,则根据随后的输入创建Integer类型对象。

如果输入s,则根据随后的输入创建String类型对象。

如果不是以上这些输入,则不创建对象,而是将null存入数组相应位置。

最后倒序输出数组中的所有对象,如果数组中相应位置的元素为null则不输出。

裁判测试程序:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    //这边是你的代码
    sc.close();
}

输入样例:

5
c
d 2.3
other
i 10
s Test

输出样例:

Test
10
2.3
//这行显示Computer对象toString方法

Code:

    int n =sc.nextInt();
    Object []o=new Object[n];
    for(int i=0;i<n;i++){
        String str=sc.next();
        switch(str){
            case "c":    
                o[i] = new Computer();
                break;
            case"d":
                o[i]=sc.nextDouble();
                break;
            case"i":
                o[i]=sc.nextInt();
                break;
            case"s":
                o[i]=sc.next();
                break;
            default:
                o[i]=null;
    }
}
    for(int j=n-1;j>=0;j--){
        if(o[j]!= null){
        System.out.println(o[j]);}
    }

7-1 jmu-Java-03面向对象基础-01-构造方法与toString

定义一个有关人的Person类,内含属性: String nameint ageboolean genderint id,所有的变量必须为私有(private)。 注意:属性顺序请严格按照上述顺序依次出现。

1.编写无参构造函数:

  • 打印"This is constructor"。

  • 将name,age,gender,id按照name,age,gender,id格式输出

2.编写有参构造函数

依次对name,age,gender赋值。

3.覆盖toString函数:

按照格式:类名 [name=, age=, gender=, id=]输出。建议使用Eclipse自动生成.

4.对每个属性生成setter/getter方法

5.main方法中

  • 首先从屏幕读取n,代表要创建的对象个数。

  • 然后输入n行name age gender , 调用上面2编写的有参构造函数新建对象。

  • 然后将刚才创建的所有对象逆序输出。

  • 接下来使用无参构造函数新建一个Person对象,并直接打印该对象。

输入样例:

3
a 11 false
b 12 true
c 10 false

输出样例:

Person [name=c, age=10, gender=false, id=0]
Person [name=b, age=12, gender=true, id=0]
Person [name=a, age=11, gender=false, id=0]
This is constructor
null,0,false,0
Person [name=null, age=0, gender=false, id=0]

Code:

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc =new Scanner(System.in);
        int n=sc.nextInt();
        Person p[]=new Person[n];
        for(int i=0;i<n;i++){
            String name=sc.next();
            int age=sc.nextInt();
            boolean gender=sc.nextBoolean();
            p[i]=new Person(name,age,gender);
        }
        for(int j=n-1;j>=0;j--){
            p[j].toString();
        }
        new Person();
    }
}
class Person {
    private String name=null;
    private int age=0;
    private boolean gender=false;
    private int id=0;
    Person(){
        System.out.println("This is constructor");
        System.out.println(name+","+age+","+gender+","+id);
        System.out.println("Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]");
    }
    Person(String name ,int age,boolean gender ){
        this.name=name;
        this.age=age;
        this.gender=gender;
        }
    public String toString(){
        System.out.println("Person [name="+this.name+", age="+this.age+", gender="+this.gender+", id="+this.id+"]");
        return "1";
    }
}

###

7-2 jmu-Java-03面向对象基础-02-构造方法与初始化块

分数 10

全屏浏览题目切换布局

作者 郑如滨

单位 集美大学

1.定义一个Person类

属性:String name, boolean gender, int age, int id ,所有的变量必须为私有(private)。 无参构造函数:Person(), 功能:打印This is constructor有参构造函数:Person(name, gender, age)功能:给属性赋值。 建议:使用Eclipse自动生成toString方法

2.定义类的初始化块

为Person类加入初始化块,在初始化块中对id属性赋值,并且要保证每次的值比上次创建的对象的值+1。然后在下一行打印This is initialization block, id is ... 其中...是id的值。 提示:可为Person类定义一个static属性来记录所创建的对象个数。

3.编写静态初始化块

打印This is static initialization block

4.编写main方法

  • 首先输入n,代表要创建的对象数量。

  • 然后从控制台分别读取n行的name age gender, 并调用有参构造函数Person(name, age, gender)新建对象 。

  • 将创建好的n个对象逆序输出(即输出toString()方法)。

  • 使用无参构造函数新建一个Person对象,然后直接打印该对象。

思考

初始化类与对象有几种方法,构造函数、初始化块、静态初始化块。这三种方法执行的先后顺序是什么?各执行几次。

输入样例:

3
a 11 false
b 12 true
c 10 false

输出样例:

This is static initialization block
This is initialization block, id is 0
This is initialization block, id is 1
This is initialization block, id is 2
Person [name=c, age=10, gender=false, id=2]
Person [name=b, age=12, gender=true, id=1]
Person [name=a, age=11, gender=false, id=0]
This is initialization block, id is 3
This is constructor
null,0,false,3
Person [name=null, age=0, gender=false, id=3]

Code:

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    Person p[]=new Person[n];
    for (int i=0;i<n;i++){
        String name=sc.next();
        int age=sc.nextInt();
        boolean gender =sc.nextBoolean();
        p[i]=new Person(name,age,gender);
    }
        for(int j=n-1;j>=0;j--){
            System.out.println(p[j]);
        }
        System.out.println(new Person());
    }
}

class Person{
    private String name;
    private boolean gender;
    private int age;
    private int id;
    private static int idValue=0;
    Person(){
        System.out.println("This is constructor");
        System.out.println(name+","+age+","+gender+","+id);
    }
    
    
Person(String name,int age ,boolean gender){
    this.name=name;
    this.age=age;
    this.gender=gender;
        
}
    {
        this.id=idValue++;
        System.out.println("This is initialization block, id is "+this.id);
    }
    static{
        System.out.println("This is static initialization block");
    }
    public String toString(){
        return "Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]";
            
    }
}

7-3 jmu-Java-03面向对象基础-03-形状

分数 10

全屏浏览题目切换布局

作者 郑如滨

单位 集美大学

1. 定义长方形类与圆形类Circle

长方形类-类名:Rectangleprivate属性:int width,length 圆形类-类名:Circleprivate属性:int radius

编写构造函数: 带参构造函数:Rectangle(width, length),Circle(radius)

编写方法: public int getPerimeter(),求周长。 public int getArea(),求面积。 toString方法,使用Eclipse自动生成。

注意:

  1. 计算圆形的面积与周长,使用Math.PI

  2. 求周长和面积时,应先计算出其值(带小数位),然后强制转换为int再返回。

2. main方法

  • 输入2行长与宽,创建两个Rectangle对象放入相应的数组。

  • 输入2行半径,创建两个Circle对象放入相应的数组。

  • 输出1:上面2个数组中的所有对象的周长加总。

  • 输出2:上面2个数组中的所有对象的面积加总。

  • 最后需使用Arrays.deepToString分别输出上面建立的Rectangle数组与Circle数组

思考:如果初次做该题会发现代码冗余严重。使用继承、多态思想可以大幅简化上述代码。

输入样例:

1 2
3 4
7
1

输出样例:

69
170
[Rectangle [width=1, length=2], Rectangle [width=3, length=4]]
[Circle [radius=7], Circle [radius=1]]

Code:

import java.util.Scanner;
import java.util.Arrays;
class Rectangle{
    private int length;
    private int width;
    public Rectangle(int width,int length){
        this.width=width;
        this.length=length;
    }
    public int getPerimeter(){
        return (length+width)*2;
    }
    public int getArea(){
        return length*width;
    }
    public String toString(){
        return "Rectangle [width="+width+", length="+length+"]";
    }
}
class Circle{
    private int radius;
    private double s;
    Circle(int radius){
        this.radius=radius;
    }
    public int getPerimeter(){
        s=2 * Math.PI* radius;
        return (int)s;
    }
    public int getArea(){
        s=Math.PI*radius*radius;
        return (int)s;
    }
    public String toString(){
        return "Circle [radius="+radius+"]";
    }
}

public class Main{
    public static void main(String[] args){
    Scanner sc =new Scanner(System.in);
    Rectangle[] rectangle=new Rectangle[2];
    rectangle[0]=new Rectangle(sc.nextInt(),sc.nextInt());
    rectangle[1]=new Rectangle(sc.nextInt(),sc.nextInt());

    Circle []circle =new Circle[2];
    circle[0]=new Circle(sc.nextInt());
    circle[1]=new Circle(sc.nextInt());
    System.out.println(rectangle[0].getPerimeter()+
                       rectangle[1].getPerimeter()+
                       circle[0].getPerimeter()+
                      circle[1].getPerimeter());
    System.out.println(rectangle[0].getArea()+rectangle[1].getArea()+circle[0].getArea()
                      +circle[1].getArea());
    System.out.println(Arrays.deepToString(rectangle));
    System.out.println(Arrays.deepToString(circle));
        
    }
    
}

7-4 jmu-Java-03面向对象基础-04-形状-继承

分数 15

全屏浏览题目切换布局

作者 郑如滨

单位 集美大学

前言

前面题目形状中我们看到,为了输出所有形状的周长与面积,需要建立多个数组进行多次循环。这次试验使用继承与多态来改进我们的设计。

本题描述

1.定义抽象类Shape 属性:不可变静态常量double PI,值为3.14抽象方法:public double getPerimeter(),public double getArea()

2.RectangleCircle类均继承自Shape类。 Rectangle类(属性:int width,length)、Circle类(属性:int radius)。 带参构造方法为Rectangle(int width,int length),Circle(int radius)toString方法(Eclipse自动生成)

3.编写double sumAllArea方法计算并返回传入的形状数组中所有对象的面积和double sumAllPerimeter方法计算并返回传入的形状数组中所有对象的周长和

4.main方法 4.1 输入整型值n,然后建立n个不同的形状。如果输入rect,则依次输入宽、长。如果输入cir,则输入半径。 4.2 然后输出所有的形状的周长之和,面积之和。并将所有的形状信息以样例的格式输出。 提示:使用Arrays.toString。 4.3 最后输出每个形状的类型与父类型.使用类似shape.getClass() //获得类型, shape.getClass().getSuperclass() //获得父类型;

注意:处理输入的时候使用混合使用nextIntnextLine需注意行尾回车换行问题。

思考

  1. 你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适?

  2. 是否应该声明为static?

输入样例:

4
rect
3 1
rect
1 5
cir
1
cir
2

输出样例:

38.84
23.700000000000003
[Rectangle [width=3, length=1], Rectangle [width=1, length=5], Circle [radius=1], Circle [radius=2]]
class Rectangle,class Shape
class Rectangle,class Shape
class Circle,class Shape
class Circle,class Shape

Code:

import java.util.*;
abstract class Shape{
    static final double PI=3.14;
    public abstract double getPerimeter();
    public abstract double getArea();
}
class Rectangle extends Shape{
    private int width;
    private int length;
    public Rectangle(int width,int length){
        this.width=width;
        this.length=length;
    }
    public double getPerimeter(){
        return 2*(this.width+this.length);
    }
    public double getArea(){
        return this.width*this.length;
    }
    public String toString(){
        return "Rectangle [width="+width+", length="+length+"]";
    }
}
class Circle extends Shape{
    private int radius;
    public Circle(int radius){
        this.radius =radius;
    }
    public double getPerimeter(){
        return PI*this.radius*2;
    }
    public double getArea(){
        return PI*this.radius*this.radius;
    }
    public String toString(){
        return "Circle [radius="+radius+"]";
    }
}
public class Main{
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        sc.nextLine();
        Shape []shapes =new Shape[n];
        for(int i=0;i<n;i++){
            String shape=sc.nextLine();
            if(shape.equals("rect")){
                int width =sc.nextInt();
                int length=sc.nextInt();
                sc.nextLine();
                shapes[i]=new Rectangle(width,length);
            }
            else{
                int radius=sc.nextInt();
                sc.nextLine();
                shapes[i]=new Circle(radius);
            }
        }
        System.out.println(sumAllPermeter(shapes));
        System.out.println(sumAllArea(shapes));
        System.out.println(Arrays.toString(shapes));
        for(Shape s:shapes){
            System.out.println(s.getClass()+","+s.getClass().getSuperclass());
        }
    }
    public static double sumAllArea(Shape[] shapes){
        double sum=0;
        for(Shape s:shapes){
            sum=sum+s.getArea();
        }
        return sum;
    }
    public static double sumAllPermeter(Shape[] shapes){
        double sum =0;
        for(Shape s:shapes){
            sum=sum+s.getPerimeter();
        }
        return sum;
    }
}

7-5 jmu-Java-03面向对象基础-05-覆盖

分数 15

全屏浏览题目切换布局

作者 郑如滨

单位 集美大学

Java每个对象都继承自Object,都有equals、toString等方法。 现在需要定义PersonOverride类并覆盖其toStringequals方法。

1. 新建PersonOverride

a. 属性String nameint ageboolean gender,所有的变量必须为私有(private)。

b. 有参构造方法,参数为name, age, gender

c. 无参构造方法,使用this(name, age,gender)调用有参构造方法。参数值分别为"default",1,true

d.toString()方法返回格式为:name-age-gender

e. equals方法需比较name、age、gender,这三者内容都相同,才返回true.

2. main方法

2.1 输入n1,使用无参构造方法创建n1个对象,放入数组persons1。 2.2 输入n2,然后指定name age gender。每创建一个对象都使用equals方法比较该对象是否已经在数组中存在,如果不存在,才将该对象放入数组persons2。 2.3 输出persons1数组中的所有对象 2.4 输出persons2数组中的所有对象 2.5 输出persons2中实际包含的对象的数量 2.5 使用System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));输出PersonOverride的所有构造方法。

提示:使用ArrayList代替数组大幅复简化代码,请尝试重构你的代码。

输入样例:

1
3
zhang 10 true
zhang 10 true
zhang 10 false

输出样例:

default-1-true
zhang-10-true
zhang-10-false
2
[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]

Code:

import java.util.*;
class PersonOverride{
    private String name;
    private int age;
    private boolean gender;

    public PersonOverride(){
        this("default",1,true);
    }
    public PersonOverride(String name, int age,boolean gender){
        this.name=name;
        this.age=age;
        this.gender=gender;
    }
    @Override
    public String toString(){
        return this.name+"-"+this.age+"-"+this.gender;
    }
    @Override
    public boolean equals(Object o){
        if(this == o){
            return true;
        }
        if(o==null){
            return false;
        }
        if(this.getClass() != o.getClass()){
            return false;
        }
        PersonOverride p=( PersonOverride) o;
        return Objects.equals((this.name),p.name) && this.gender ==p.gender && this.age==p.age;
    }
}
    public class Main{
        public static void main (String [] args){
            Scanner sc=new Scanner(System.in);
            int n1=sc.nextInt();
            sc.nextLine();
            PersonOverride[] person1=new PersonOverride[n1];
            for(int i=0;i<n1;i++){
                person1[i]=new PersonOverride();
            }
            int n2=sc.nextInt();
            sc.nextLine();
            PersonOverride[] person2=new PersonOverride[n2];
            int len2=0;
            for(int i=0;i<n2;i++){
                String name =sc.next();
                int age =sc.nextInt();
                boolean gender=sc.nextBoolean();
                sc.nextLine();
                PersonOverride p =new PersonOverride(name ,age,gender);
                boolean flag = true;
                for(int j=0;j<len2;j++){
                    if(person2[j].equals(p)){
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    person2[len2]=p;
                    len2++;
                }
            }
            for(PersonOverride p:person1){
                System.out.println(p);
            }
            for(int i=0;i<len2;i++){
                System.out.println(person2[i]);
            }
            System.out.println(len2);
            System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));
        }
    }

###

7-6 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对象。

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

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

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

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

  5. 输出字符串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

Code

import java.text.DecimalFormat;
import java.util.*;
 
abstract class Person implements Comparable<Person> {
    String name;
    int age;
    boolean gender;
 
    Person() {
 
    }
 
    Person(String name, int age, boolean gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
 
    @Override
    public String toString() {
        return this.name + "-" + this.age + "-" + this.gender;
    }         //返回"name-age-gender"格式的字符串
 
    public boolean equals(Person o1) {
        if (this.name.equals(o1.name) && this.gender == o1.gender && this.age == o1.age) {
            return true;
        } else {
            return false;
        }
    }//比较name、age、gender,都相同返回true,否则返回false
 
    @Override
    public int compareTo(Person o) {
        if (this.name.compareTo(o.name) > 0) {
            return 1;
        } else if (this.name.compareTo(o.name) < 0) {
            return -1;
        } else {
            return this.age - o.age;
        }
    }
}
 
class Student extends Person {
    String stuNo;
    String clazz;
 
    Student() {
        super();
    }
 
    Student(String name, int age, boolean gender, String stuNo, String clazz) {
        super(name, age, gender);
        this.stuNo = stuNo;
        this.clazz = clazz;
    }
 
    @Override
    public String toString() {
        return this.name + "-" + this.age + "-" + this.gender + "-" + this.stuNo + "-" + this.clazz;
    }
 
    public boolean equals(Student o2) {
        if (super.equals(o2) && this.stuNo.equals(o2.stuNo) && this.clazz.equals(o2.clazz)) {
            return true;
        } else {
            return false;
        }
    }
}
 
 
class Company {
    String name;
 
    Company(String name) {
        this.name = name;
    }
 
    @Override
    public String toString() {
        return name;
    }         //直接返回name
 
    public boolean equals(Person o1) {
        if (o1.name == this.name) {
            return true;
        } else {
            return false;
        }
    }
 
}
 
class Employee extends Person {
    Company company;
    double salary;
 
    //建议使用super复用Person类的相关有参构造函数
    Employee(String name, int age, boolean gender, double salary, Company company) {
        super(name, age, gender);
        this.company = company;
        this.salary = salary;
    }
 
    @Override
    public String toString() {
        return this.name + "-" + this.age + "-" + this.gender + "-" + this.company + "-" + this.salary;
    }
 
    public boolean equals(Employee e) {
        if (super.equals(e) && this.company.name.equals(e.company.name)) {
            String df1 = new DecimalFormat("#.#").format(this.salary);
            String df2 = new DecimalFormat("#.#").format(e.salary);
            return this.company.toString().compareTo(e.company.toString()) == 0 && df1.compareTo(df2) == 0;
        } else {
            return false;
        }
    }
 
}
 
class Main {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        List<Student> stuList = new ArrayList<>();
        List<Employee> empList = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        String op;
        while (true) {
            op = sc.next();
            //System.out.println(op);
            if (op.equals("s")) {
                String name;
                int age;
                boolean gender;
                String stuNo;
                String clazz;
                name = sc.next();
                age = sc.nextInt();
                gender = sc.nextBoolean();
                stuNo = sc.next();
                clazz = sc.next();
                if (name.equals("null") || stuNo.equals("null")) {
                    continue;
                } else {
                    Student st = new Student(name, age, gender, stuNo, clazz);
                    personList.add(st);
                }
            } else if (op.equals("e")) {
                String name;
                int age;
                boolean gender;
                String company;
                double salary;
                name = sc.next();
                age = sc.nextInt();
                gender = sc.nextBoolean();
                salary = sc.nextDouble();
                company = sc.next();
                if (name.equals("null")) {
                    continue;
                } else {
                    Company cm = new Company(company);
                    Employee em = new Employee(name, age, gender, salary, cm);
                        personList.add(em);
                }
            } else {
                Collections.sort(personList);
                for (Person person : personList) {
                    if (person instanceof Student) {
                        Student student = (Student) person;
                        int f = 1;
                        for (Student stu : stuList) {
                            if (stu.equals(student)) {
                                f = 0;
                                break;
                            }
                        }
                        if (f == 1) {
                            stuList.add(student);
                        }
                        System.out.println("Student:" + student);
                    } else if (person instanceof Employee) {
                        Employee employee = (Employee) person;
                        int f = 1;
                        for (Employee emp : empList) {
                            if (emp.equals(employee)) {
                                f = 0;
                                break;
                            }
                        }
                        if (f == 1) {
                            empList.add(employee);
                        }
                        System.out.println("Employee:" + employee);
                    }
                }
                op = sc.next();
                if (op.equals("exit")) {
                    break;
                } else if (op.equals("return")) {
                    break;
                }
                System.out.println("stuList");
                for (Student student : stuList) {
                    System.out.println("Student:" + student);
                }
                System.out.println("empList");
                for (Employee employee : empList) {
                    System.out.println("Employee:" + employee);
                }
            }
        }
 
    }
}

###

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值