簡體   English   中英

null指針異常Java用繪圖2D數組列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM