我问了一个关于生命游戏实现代码的问题。建议的解决方案解决了我的问题,但又产生了一个新问题。
现在,如果我尝试调用 getCell()
方法,我会得到 java.lang.NullPointerException
。
如何避免这种异常?
链接到我之前的问题以及我使用的相应代码和解决方案代码:
How can I access the Cell Array in my getCell method? (Java)
或者如果您只想要代码:
public class GameMap {
private Cell[][] cellArray;
private static Cell[][] buildCellArray(int width, int height){
Cell[][] cellArray = new Cell[width][height];
int i;
int j;
for(i = 0; i < width; i++) {
for(j = 0; j < height; j++) {
cellArray[i][j] = new Cell();
}
}
return cellArray;
}
public GameMap(int sizeX, int sizeY) {
buildCellArray(sizeX, sizeY);
}
public Cell getCell(int posX, int posY){
return cellArray[posX][posY];
}
}
最佳答案
buildCellArray(sizeX, sizeY);
这确实构建了一个新数组并返回它,但您没有将其分配给它需要转到的字段。您只需丢弃结果,字段保持原来的样子 (null
)。
你需要做
cellArray = buildCellArray(sizeX, sizeY);
您有一个与静态方法中的字段同名的局部变量,这有点令人困惑。但它们完全无关。尽量避免这种阴影。您可以将名称更改为例如
private static Cell[][] buildCellArray(int width, int height){
Cell[][] newCellArray = new Cell[width][height];
关于java - 如何避免代码中出现 java.lang.NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63095257/