3

これが私のコードです:

class Myclass {

    private static int[] array;

    public static void main(String[] args) {
        Myclass m = new Myclass();

        for (int i = 0; i < 10; i++) {
            m.array[i] = i;
            System.out.println(m.array[i]);
        }
    }

    public Myclass() {
        int[] array = new int[10];
    }
}

java.lang.nullPointerExceptionこれを行おうとすると、次のようにスローされます。

m.array[i] = i;

誰でも私を助けてもらえますか?

4

5 に答える 5

4

コンストラクターでローカル変数を宣言したため、宣言された in をarray実際に初期化していません。arrayMyclass

arrayコンストラクターで直接参照する必要があります。それ以外の

int[] array = new int[10];

これを使って

array = new int[10];

さらに、クラスarrayのスコープで staticを宣言しました。Myclass

private static int[] array;

hereのインスタンスは 1 つしかMyclassないので問題ありませんが、通常、コンストラクターで初期化する場合、これは静的ではありません。削除する必要がありますstatic:

private int[] array;
于 2013-06-13T22:14:50.690 に答える
0

これをMyClass()入力して

this.array = new int [10];

これの代わりに

int[] array = new int[10];
于 2013-06-13T22:13:51.227 に答える
0

コードは次のようになります。コンストラクターで、インスタンス変数を初期化する代わりに、新しいローカル変数を作成しました。インスタンス変数は初期化されていないため、NullPointerException が発生していました。また、インスタンス変数は静的であってはなりません。

class Myclass {

  private int[] array;

public static void main(String[] args) {
 Myclass m = new Myclass();
 for (int i = 0; i < 10; i++) {
    m.array[i] = i;
    System.out.println(m.array[i]);
 }
}

public Myclass() {
      array = new int[10];
}

}
于 2013-06-13T22:14:54.683 に答える