0

我有一个名为 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。

我究竟做错了什么?

4

4 回答 4

5

字段nameregNumberstatic,这意味着它们不属于任何特定实例,而是属于整个类。您需要做的就是static从 中的字段声明中删除关键字Person,使它们成为实例变量而不是类变量

我还建议您阅读理解实例和类成员

于 2013-10-18T13:56:04.953 回答
3

尝试重新阅读您的Person字段声明:

public static String name;
public static int regNumber;

您已使用static成员,如果您删除此关键字,它应该开始工作。

于 2013-10-18T13:56:13.357 回答
0

Person 类中的构造函数将变量“n”分配给名称。但是你还没有在任何地方定义它。除此之外,从变量中删除“静态”关键字。

于 2013-10-18T18:21:47.107 回答
0

您需要static从 Your中删除instance variables。如果您在名称和 regNumber 中使用staticinstance variables最后修改的值。

public class Person{
    public String name;
    public int regNumber;

}
于 2013-10-18T13:58:52.580 回答