Nullpointer在函数中使用2d数组作为参数异常
我除了在Level.java类中的函数允许我随时在我的程序中创建二维数组副本,然后更改级别数组的大小并将其填充为copy和at最后显示它。Nullpointer在函数中使用2d数组作为参数异常
当我尝试运行我的程序时,它会在Level.java(替换值的一部分)的第24行显示NullPointerException。
Game.java类
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类
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];
你只是需要指定数组对象数组引用变量“水平”,而不是创建一个本地一个和初始化它就像你一样。
您一直在为空数组引用变量赋值,因此得到了NullPointerException。
以上是 Nullpointer在函数中使用2d数组作为参数异常 的全部内容, 来源链接: utcz.com/qa/257822.html