[英]null pointer exception Java with drawing 2D array list
這可能是一個愚蠢的問題,但為什么我在這里得到一個空指針異常? 我正在嘗試為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} };
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()
方法。
或者因為它是靜態數據。 將該行移動到聲明的位置。
在init()
方法中,您隱藏了類字段map
,因為您再次聲明它(在方法init()
的本地塊中)。
另外,請確保調用init()
方法。 它應該在你的構造函數中調用:
public class YourApplet {
public YourAppler() {
init();
}
public void init()
{
map[][]={ {0,0,0},
{1,1,0},
{0,0,0} };
}
}
init()
的局部變量int map[][]
遮蔽你的實例變量private int[][] map;
。 不要在init()
方法中創建新的本地int map
。 只需在init()
方法中使用全局map數組。
public void init() {
map={ {0,0,0}, {1,1,0}, {0,0,0} };
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.