这可能是一个愚蠢的问题,但为什么我在这里得到一个空指针异常? 我正在尝试为java applet绘制一个tile map。我只是粘贴了问题区域。
private int[][] map;
public void init()
{
int map[][]={ {0,0,0},
{1,1,0},
{0,0,0} };
}
public void drawCaveTiles(Graphics g)
{
for(int i = 0; i <= 3; i++)
{
for( int j = 0; j <= 3; j++)
{
if(map[i][j] == 1)
{
g.drawImage(snow_brick, i*64, j*64, this);
}
if(map[i][j] == 0)
{
g.drawImage(black, i*64, j*64, this);
}
}
}
}
我修好了
map =new int[][] { {0,0,0},
{1,1,0},
{0,0,0} };
答案 0 :(得分:1)
int map[][]={ {0,0,0},
{1,1,0},
{0,0,0} };
在方法init()
中,您要创建一个新方法,该方法是方法init()
的本地地图,而不是初始化实例成员map
。
将其更改为
map ={ {0,0,0},
{1,1,0},
{0,0,0} };
并确保在调用inti()
方法之前调用drawCaveTiles()
方法。
或者因为它是静态数据。将该行移动到声明的位置。
答案 1 :(得分:1)
在init()
方法中,您隐藏了类字段map
,因为您再次声明它(在方法init()
的本地块中)。
另外,请确保调用init()
方法。它应该在你的构造函数中调用:
public class YourApplet {
public YourAppler() {
init();
}
public void init()
{
map[][]={ {0,0,0},
{1,1,0},
{0,0,0} };
}
}
答案 2 :(得分:1)
int map[][]
中的局部变量init()
正在影响您的实例变量private int[][] map;
。不要在int map
方法中创建新的本地init()
。只需在init()
方法中使用全局地图数组。
public void init() {
map={ {0,0,0}, {1,1,0}, {0,0,0} };
}