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

回到顶部