尝试构建一个对象数组,但得到一个nullpointer异常

时间:2015-05-18 11:02:44

标签: java

我正在尝试构建一个对象数组,但在尝试设置它们时会得到一个nullpointer异常。

为什么当它到达第一辆车[i]时,它会抛出异常?

这是代码: 示例1:http://pastebin.com/4h4W3770 示例2:http://pastebin.com/4GL4FhrW

3 个答案:

答案 0 :(得分:2)

创建数组对象时,其所有元素都初始化为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();
        }

    }

答案 1 :(得分:0)

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

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

更改为:

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

答案 2 :(得分: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]));
}

我认为这将解决您的问题。