2015-05-18 53 views

回答

2

当你创建一个数组对象时,它的所有元素都被初始化了t null(如果数组包含java.lang.Object的子类)。您需要在访问任何属性之前实例化每个元素。您正在尝试设置Cars属性,而不在代码实例它下面,这是造成NullPointerException

car[i].setPlate(info[0]); 

在此之前,你需要初始化Car的实例是这样的:

public static void main(String[] args) { 
     String sCurrentLine; 
     try (BufferedReader br = new BufferedReader(new FileReader("cars.txt"))) { 
      while ((sCurrentLine = br.readLine()) != null) { 
       String[] info = sCurrentLine.split(","); 
       for (int i = 0; i < 10; i++) { 
        car[i] = new Cars(); //instantiate Cars object or next statement will throw NPE 
        car[i].setPlate(info[0]); 
        car[i].setLocation(Integer.parseInt(info[1])); 
        car[i].setSpeed(Integer.parseInt(info[2])); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
+0

谢谢!这是正确的答案。 – anaruson

+0

在这种情况下,您可以将此答案标记为已接受并答复此问题:) –

0

你的setter方法没有得到任何输入/参数,所以他们不知道他们应该设置什么:

public void setSpeed() { 
    this.speed = speed; 
} 

变化到:

public void setSpeed(Integer speed) { 
    this.speed = speed; 
    } 
+0

对不起,我在问题中使用了一个旧链接,我更新了它并且已经修复了这个问题。任何想法仍然? – anaruson

+0

啊,你的例子现在更有意义了。认为sud29现在有正确的答案。 – hamena314

0

你有一个简单的问题。你从未初始化过car[i]car[i]null当您尝试对null变量进行任何操作时,您将得到一个NullPointerException

所以解决的办法就是初始化car[i]如下图所示:

for (int i = 0; i < 10; i++) { 
    car[i] = new Cars(); //intialise the car. 
    car[i].setPlate(info[0]); 
    car[i].setLocation(Integer.parseInt(info[1])); 
    car[i].setSpeed(Integer.parseInt(info[2])); 
} 

这个我想会解决你的问题。

相关问题