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());
        }

     }
}

問題は、個々の人の年齢を印刷しようとすると、印刷される唯一の数字が 2 であるため、Person クラスによって作成された最後のオブジェクトだけで配列が満たされているように見えることです。

私は何を間違っていますか?

4

4 に答える 4

3

Personフィールド宣言を読み直してみてください。

public static String name;
public static int regNumber;

メンバーを使用staticしました。このキーワードを削除すると、機能し始めるはずです。

于 2013-10-18T13:56:13.357 に答える
0

staticYourから削除する必要がありますinstance variables。で使用staticしたinstance variables場合、最後に変更された値が名前と regNumber に含まれます。

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

}
于 2013-10-18T13:58:52.580 に答える