0

我正在尝试将我创建的对象从一个数组复制到另一个相同类型的 Java 中。当我运行我的程序时,我收到一个 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 回答