谁能告诉我为什么对象 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());
}
}
}
我认为这会如您所愿。
我有一个名为 main 的 class 和继承自 Person2 的 Staff
1) 我应该创建一个包含 Staff
类型对象的 ArrayList2) 然后使用 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());
}
}
}
我认为这会如您所愿。