我除了我在Level.java类中的函数允许我在程序中随时进行二维数组复制,然后更改关卡数组的大小并用复制值填充它,最后显示它。
当我尝试运行我的程序时,它在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类
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]);
}
}
}
}
答案 0 :(得分:1)
将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];
您只需将数组Object分配给数组引用变量“level”,而不是创建本地数据并像您一样初始化它。
您一直在为null数组引用变量赋值,因此得到了NullPointerException。