为什么我会在分配时获得NPE:
mPyramid[row][column] = temp;
这是我的代码:
Block temp;
Block[][] pyramid = new Block[mInput.length][];
for (int i = 0; i < pyramid.length; i++) {
pyramid[i] = new Block[mInput[i].length];
for (int j = 0; j < pyramid[i].length; j++) {
pyramid[i][j] = new Block();
}
}
for (int row = 1; row < mInput.length; row++) {
for (int column = 0; column < mInput[row].length; column++) {
temp = new Block(mInput[row][column], null, null);
mPyramid[row][column] = temp;
setParents(row, column);
temp.setPathNode(calculateDistance(temp));
}
}
}
答案 0 :(得分:3)
您似乎正在创建局部变量pyramid
,然后引用mPyramid
。
答案 1 :(得分:0)
因为mPyramid
未初始化或子阵列mPyramid[row]
未初始化。
我猜你是第二种情况。要立即使用高度和宽度初始化mPyramid,您可以使用:
mPyramid = new Block[height][width]; // Swap height and width if you prefer