2011-06-06 176 views
1

嘿,我們正在努力使客戶端 - 服務器的賽車遊戲爲我們的學期項目球員,但我們有一些奇怪的錯誤奇怪的例外

public void updatePosition(int id, ArrayList<Point2D.Float> positions){ 
    if(id==1){ 
     for (int i = 1; i < game.getS().getVehicles().size(); i++) 
     { 
      game.getS().getVehicles().get(i).updatePosition(positions.get(i));    
     } 

    }else if(id==2){ 
     game.getS().getVehicles().get(1).updatePosition(positions.get(0));    
     for (int i = 2; i < game.getS().getVehicles().size(); i++) 
     { 
      game.getS().getVehicles().get(i).updatePosition(positions.get(i)); 
     } 

這是我們的代碼

和例外是在這個確切row: game.getS()。getVehicles()。get(1).updatePosition(positions.get(0));

+2

而究竟在何處是個例外?請閱讀http://tinyurl.com/so-hints – 2011-06-06 12:08:46

回答

4

默認情況下,引用初始化爲空。如果您創建了一個集合或數組,並且未能初始化引用,那麼默認情況下它們將爲空。

+0

那麼我們可以改變什麼或我們應該在哪裏搜索? – 2011-06-06 12:19:45

+0

使參考不爲null。你假設你在集合中有很好的數據,但是JVM告訴你,你沒有。檢查你的假設。 – duffymo 2011-06-06 12:36:48

1

A NullPointerException可能出現在這個小代碼片段的很多地方。

基本上,當你有那種a.b().c()的表情,NullPointerException可如果anull,或者拋出,如果b()回報null

如果你不確定,所有這樣的表達的部分是不爲空,你必須進行明確的檢查:

if (a != null) { 
    WhateverObject intermediate = a.b(); 

    if (intermediate != null) { 
    intermediate.c(); 
    } 
}