gpt4 book ai didi

java - 如何避免代码中出现 java.lang.NullPointerException?

转载 作者:行者123 更新时间:2023-12-02 19:20:49 25 4
gpt4 key购买 nike

我问了一个关于生命游戏实现代码的问题。建议的解决方案解决了我的问题,但又产生了一个新问题。
现在,如果我尝试调用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com