谁能告诉我为什么对象 Staff 为 Null 以及如何修复它

Can anyone tell me why am having Null for the object Staff and how can I fix it

我有一个名为 main 的 class 和继承自 Person2 的 Staff

1) 我应该创建一个包含 Staff

类型对象的 ArrayList

2) 然后使用 Person2 class 创建 Staff 对象并将其插入到列表中

3) 让用户输入员工对象的数据然后打印它

我有一个问题,当我 运行 我的 main 时,我得到了用户为对象 Staff 输入的内容的 Null 值,这意味着我做错了

主文件

import java.util.ArrayList;
import java.util.Scanner;
public class Test {

public static void main(String[] args) {

    ArrayList<Staff>list=new ArrayList<Staff>();

    Scanner in=new Scanner(System.in);

    list.add(new Staff());
    list.add(new Staff("Marry", 23,500));

    System.out.println("Enter name");
    String name=in.next();

    System.out.println("Enter age");
    int age=in.nextInt();

    list.get(0).setName(name);
    list.get(0).setAge(age);

    Person2 c = new Staff(); 
    list.add((Staff) c); 
    System.out.println("Enter name");
    String name=in.next();

    System.out.println("Enter age");
    int age=in.nextInt();

    // Then what should I write here to not get null results for the object Staff


    for(int i=0; i<list.size();i++)
        System.out.println(list.get(i));

}

}

个人档案

public class Person2 {

private String name;
private int age;
private String contactNumber;


public Person2()
{
    System.out.println(" Constructing default Person");

}

 Person2 ( String n, int a )
 { 
     System.out.println(" Constructing non-default Person");
     name = n;
     age = a;


 }

 public void setName( String name)
 {
     this.name = name;
 }

 public String getName()
 {
     return name;
 }

 public void setAge( int age)
 {
     this.age = age;
 }

 public int getAge()
 {
     return age;
 }


 public String toString()
 {
     return "Name : " +getName()
             +"\nAge :" +getAge()

 }
 }

员工档案

public class Staff extends Person2{

private double salary;

public Staff()
{
    System.out.println("Constructing default Staff ");
}

public Staff( String name, int age, double salary)
{
    super(name, age);
    System.out.println("Constructing non-default Staff ");
    this.salary = salary;
}

public void setSalary( double salary)
{
    this.salary = salary;
}

public double getSalary()
{
    return salary;
}

    public String toString()
{
    return super.toString() +"\nSalary : " +getSalary();
}
}

你的主要方法有一些严重的错误。列表不应该那样使用。

我已经为该应用程序提供了可能的修复方法。假设您需要阅读 5 名员工的详细信息。

没有提供工资部分。如果您愿意,可以添加它

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {

public static void main(String[] args) {

    List<Staff>list=new ArrayList<Staff>();

    Scanner in=new Scanner(System.in);

    for (int i = 0; i<5; i ++) {
        Staff staff = new Staff();
        System.out.println("Enter name");
        String name=in.next();

        System.out.println("Enter age");
        int age=in.nextInt();

        staff.setAge(age);
        staff.setName(name);

        list.add(staff);
    }

    for (Staff staff : list) {
        System.out.println(staff.toString());
    }
}

}

我认为这会如您所愿。