2012-07-12 65 views
0
map = new BufferedImage[width][height]; 
    for(int i=0;i<height;i++){ 
     for(int j=0;j<width;j++){  
    if(charMap[j][i] == Mountains.indentifier) {  
    if (j+1 < width && j-1 >= 0){ 
     if(charMap[j-1][i] != Mountains.indentifier && charMap[j+1][i] != Mountains.indentifier) {    
      map[j][i]= tileGrid[1][10]; 
     } 
    }  
    else { 
     map[j][i]= tileGrid[8][10]; 
    } 
    } 
} 

這是我使用嘗試通過檢查周圍的細胞每瓦檢查二維數組的代碼,但我似乎得到一個NullPointerException我不知道是否有人能幫助?NullPointerException異常的二維數組

+4

您會在哪一行發生異常?當你在調試器中運行這個函數時,你學到了什麼,並在拋出異常時檢查了所有變量值? – 2012-07-12 00:47:14

+0

那麼nullpointerexception來自if(j + 1 = 0)代碼,因爲如果沒有那個代碼,我會得到一個ArrayIndexOutofBoundsException,並且II會理解爲什麼會發生這種情況 – user7715 2012-07-12 01:13:34

+1

該行不能拋出NullPointerException。 – jahroy 2012-07-12 02:17:20

回答

0

我懷疑你是從charMap[j][i] == Mountains.indentifier線得到NullPointerException異常。

確保您按照Geoff的建議初始化charMap和map的內部數組。

+0

是啊我想通了 – user7715 2012-07-12 09:44:44

0

您只分配了外部數組。

您需要分配每個內部數組。

所以:

map = new BufferedImage[width][height]; 
for (int i = 0; i < width; i++) 
{ 
    map[i] = new BufferedImage[height]; 
} 
+0

我編輯它,我從這個代碼「if(j + 1 <寬度&& j-1> = 0)」nullpointerexception「沒有這個代碼的數組有可能會超出數組,但我不明白爲什麼我得到一個nullpointerexception – user7715 2012-07-12 01:15:26

+1

你不能從該行得到一個NullPointerException。它們都是原始類型。 我想再試一次調試,找出你真正弄明白的是哪一行。 – Brad 2012-07-12 02:11:26

+0

我覺得事實證明,當初始化數組時,我沒有在數組的其餘部分放置值。 – user7715 2012-07-12 09:44:20