【问题标题】:Java: (Error) Exception in thread "main" java.lang.NullPointerException at Main.main(Main.java:14) [duplicate]Java:(错误)Main.main(Main.java:14)处的线程“main”java.lang.NullPointerException中的异常[重复]
【发布时间】:2016-02-02 23:06:11
【问题描述】:

我意识到这是一个常见错误,我已尝试使用其他有关此确切错误的问题来解决它,但我无法提出解决方案。我制作了 10 辆汽车的阵列,并设置了每辆汽车的品牌、颜色和年份。 getter 和 setter 方法位于另一个名为“Car”的类中。我不确定在哪里设置为空。提前感谢您的帮助。

错误:线程“main”中的异常 java.lang.NullPointerException 在 Main.main(Main.java:14)

import java.util.Random;

public class Main {

public static void main(String[] args) {

    //Array of 10 cars
    Car[] cars;
    cars = new Car[10];

    //Assign random colors and makes of my choice
    cars[0].setMake("Toyota");
    cars[1].setMake("Kia");
    cars[2].setMake("Porsche");
    cars[3].setMake("Ferrari");
    cars[4].setMake("Honda");
    cars[5].setMake("Jaguar");
    cars[6].setMake("Lexus");
    cars[7].setMake("Nissan");
    cars[8].setMake("BMW");
    cars[9].setMake("Tesla");

    cars[0].setColor("Black");
    cars[1].setColor("Green");
    cars[2].setColor("Silver");
    cars[3].setColor("Red");
    cars[4].setColor("Yellow");
    cars[5].setColor("White");
    cars[6].setColor("Blue");
    cars[7].setColor("Orange");
    cars[8].setColor("Purple");
    cars[9].setColor("Gold");

    //Randomly selected years for the cars
    int maxYear = 2015;
    int minYear = 2010;
    int maxYear2 = 2009;
    int minYear2 = 1990;

    Random r = new Random(1234);
    cars[0].setYear(r.nextInt(maxYear - minYear + 1) + minYear);
    cars[1].setYear(r.nextInt(maxYear - minYear + 1) + minYear);
    cars[2].setYear(r.nextInt(maxYear - minYear + 1) + minYear);
    cars[3].setYear(r.nextInt(maxYear - minYear + 1) + minYear);
    cars[4].setYear(r.nextInt(maxYear - minYear + 1) + minYear);
    cars[5].setYear(r.nextInt(maxYear2 - minYear2 + 1) + minYear2);
    cars[6].setYear(r.nextInt(maxYear2 - minYear2 + 1) + minYear2);
    cars[7].setYear(r.nextInt(maxYear2 - minYear2 + 1) + minYear2);
    cars[8].setYear(r.nextInt(maxYear2 - minYear2 + 1) + minYear2);
    cars[9].setYear(r.nextInt(maxYear2 - minYear2 + 1) + minYear2);

}

}

【问题讨论】:

    标签: java arrays nullpointerexception


    【解决方案1】:

    初始化对象数组不会初始化数组中包含的对象,因此您会收到 NullPointerException。

    在你尝试这样做之前:

    cars[0].setMake("Toyota");
    

    你应该首先像这样初始化你的 Car 对象:

    cars[0] = new Car(); // or use any other appropriate constructor
    

    同样适用于数组中的其余对象。

    【讨论】:

    • @D.Khan 我的回答已经回答了你的问题,请仔细阅读。
    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 2013-11-21
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多