0

作成したオブジェクトを、Javaで1つの配列から同じタイプの別の配列にコピーしようとしています。プログラムを実行すると、NullPointerExceptionが発生します。

関連するクラス関数は次のとおりです。

private int mState;
public Cell(int pRow, int pColumn, int pState) {
    //other things
    setState(pState);
}

public void setState(int pNewState) {
    mState = pNewState;
}

public void setDead() {
    mState = DEAD;
}

およびエラーが発生した行:

mFutureGeneration[i][j].setDead();

その配列は次のように定義されます

private Cell [][] mFutureGeneration;

次に、次のようにディメンション化されます

mFutureGeneration = new Cell[100][100]; 

内容は次の場所から受け取ります。

Cell [][] vSeedArray = new Cell[100][100]; 

これは次のように入力されます

for (int i = 0; i<100; i++) {
    for (int j = 0; j<100; j++) {
        int vNewState = mGenerator.nextInt(2) - 1;
        vSeedArray[i][j] = new Cell(i,j,vNewState);
    }
}

問題はコピーで発生していると思いますが、私は常にJavaが参照によってコピーされたという印象を受けていたため、なぜ失敗するのかわかりません。

内容をループでコピーします

for(int i = 0; i<vSeedArray.length; i++) {
    for(int j=0; j<vSeedArray[i].length; j++) {
            mCurrentGeneration[i][j] = vSeedArray[i][j];
    }
}

どんな助けでもいただければ幸いです。

ありがとう。

4

1 に答える 1

3

「セル」オブジェクトを割り当てているかどうかはわかりません。それらを保持する配列だけです。

もしそうなら、それはおそらくあなたのNullPointer例外の原因です。

良いリンク:

「オブジェクトの配列」セクションまで下にスクロールします。

「お役に立てば幸いです。

于 2012-10-31T01:02:46.017 に答える