我有一个名为Person的类,如下所示:
public class Person
{
public static String name;
public static int regNumber;
public String getName() {
return name;
}
public int getRegNumber() {
return regNumber;
}
public Person(int x) {
this.name = n;
this.regNumber = x;
}
}
我使用这个类来填充学生的数组:
public class PeopleArray
{
public static void main(String[]args) {
Person [] students = new Person[3];
int reg = 1;
for (int i = 0; i<students.length; i++) {
students[i] = new Person(reg++);
}
for (Person stu: students) {
System.out.println(stu.getRegNumber());
}
}
}
问题在于,当我尝试打印出每个人的年龄时,似乎数组中只填充了Person类创建的最后一个对象,因为打印的唯一数字是数字2。 / p>
我做错了什么?
答案 0 :(得分:5)
字段name
和regNumber
是static
,这意味着它们不属于任何特定实例,而是属于整个类。您需要做的就是从static
中的字段声明中删除Person
关键字,使其成为实例变量而不是类变量。
答案 1 :(得分:3)
尝试重新阅读Person
字段声明:
public static String name;
public static int regNumber;
您已使用static
成员,如果删除此关键字,则应该开始工作。
答案 2 :(得分:0)
您需要从static
中删除instance variables
。如果您在static
中使用了instance variables
,那么名称和注册号中会出现上次修改后的值。
public class Person{
public String name;
public int regNumber;
}
答案 3 :(得分:0)
Person类中的构造函数为名称指定变量“n”。但是你没有在任何地方定义它。 除此之外,请从变量中删除“static”关键字。