2011-06-06 105 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(); 
    } 
}