gpt4 book ai didi

java - 以二维数组作为参数的函数中出现空指针异常

转载 作者:行者123 更新时间:2023-11-30 06:23:54 24 4
gpt4 key购买 nike

我注意到 Level.java 类中的函数允许我在程序中随时进行 2D 数组复制,然后更改级别数组的大小并用复制值填充它,最后显示它。

当我尝试运行我的程序时,它在 Level.java 的第 24 行(替换值的部分)显示 NullPointerException。

Game.java Class

package main;

public class Game {

public static void main(String[] args) {
Level lvl = new Level();
char[][] exampleLevelTemplate = new char[][] {
{'#','#','#'},
{'#','#','#'},
{'#','#','#'}
};
lvl.setLevelSize(3,3);
lvl.setLevelLayout(exampleLevelTemplate);
lvl.displayLevel();
}

}

Level.java Class

package main;

public class Level {

private int levelWidth;
private int levelHight;
private char[][]level;

public void setLevelSize(int Width,int Height)
{
levelWidth = Width;
levelHight = Height;
char[][]level = new char[levelWidth][levelHight];
}

public void setLevelLayout(char[][]levelTemplate)
{
int a;
int b;
for(a=0; a < levelWidth; a++)
{
for(b=0; b<levelHight; b++)
{
level[a][b] = levelTemplate[a][b]; //Error happens here
}
}
}

public void displayLevel()
{
int a;
int b;
for(a=0; a < levelWidth; a++)
{
for(b=0; b<levelHight; b++)
{
System.out.println(level[a][b]);
}
}
}

}

最佳答案

将 setLevelSize 方法更改为:

public void setLevelSize(int Width,int Height)
{
levelWidth = Width;
levelHight = Height;
level = new char[levelWidth][levelHight];
}

你会看到这一行:

char[][]level = new char[levelWidth][levelHight];

更改为:

level = new char[levelWidth][levelHight];

您只需将数组对象分配给数组引用变量“level”,而不是像您那样创建本地对象并初始化它。

您一直在为空数组引用变量赋值,因此得到 NullPointerException。

关于java - 以二维数组作为参数的函数中出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47611444/

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