2014-03-06 20 views
0

我想在Java中製作蛇型遊戲。ArrayList上的NullPointerExceptions

要做到這一點,我使用的名單,以保持每抱蛇的身體部位與

ArrayList<SnakeBodyPart> snakeBodyParts = new ArrayList<SnakeBodyPart>();

我聲明並啓動變量SnakeBodyPart SnakeBodyPart = null;

然後我用snakeBodyParts.add(SnakeBodyPart);在蛇身上添加身體部位。

(不是最有效的方式,我想,但它必須做的事。)

但由於某些原因,每當我運行該腳本,我得到

Exception in thread "main" java.lang.NullPointerException

並且該錯誤是

at game.Snake.<init>(Snake.java:60)

在Java控制檯

我想知道問題是什麼。這是SnakeBodyPart的代碼。

class SnakeBodyPart{ 
    int x,y,direction; 
    void move(){ 
     if(direction == 0){ 
      y -= 50; 
     } 
     if(direction == 1){ 
      x += 50; 
     } 
     if(direction == 2){ 
      y += 50; 
     } 
     if(direction == 3){ 
      x -= 50; 
     } 
    } 
} 

在此先感謝!

編輯:

線60 snakeBodyParts.get(0).direction = 0;

+0

加油!閱讀例外!問題出在Snake.java第60行。這就是我們需要看到的! – John3136

+0

'SnakeBodyPart SnakeBodyPart = null; .'是你的問題。在調用一個方法之前,你需要給變量分配一個實例:'snakeBodyParts.add(SnakeBodyPart);'做一些像'SnakeBodyPart sbp = new SnakeBodyPart();'假設類中沒有參數構造函數。 – Kon

+0

kon,把它放在答案中,而不是評論 – MeBigFatGuy

回答

1

你已經做到了這一點:

SnakeBodyPart snakeBodyPart = null; 

創建對象

SnakeBodyPart snakeBodyPart = new SnakeBodyPart(); 

由於snakeBodyPartnull,你在Line 60越來越NullPointerException。您打電話get()方法null作爲snakeBodyParts.get(0).direction = 0;