我想构建一个对象数组,但试图设置它们时得到一个空指针异常。试图建立一个对象数组,但得到一个空指针异常
为什么当它到达第一辆车[i]时,它会抛出异常?
下面是代码: 例1:http://pastebin.com/4h4W3770 例2:http://pastebin.com/4GL4FhrW
我想构建一个对象数组,但试图设置它们时得到一个空指针异常。试图建立一个对象数组,但得到一个空指针异常
为什么当它到达第一辆车[i]时,它会抛出异常?
下面是代码: 例1:http://pastebin.com/4h4W3770 例2:http://pastebin.com/4GL4FhrW
当你创建一个数组对象时,它的所有元素都被初始化了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();
}
}
你有一个简单的问题。你从未初始化过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]));
}
这个我想会解决你的问题。
谢谢!这是正确的答案。 – anaruson
在这种情况下,您可以将此答案标记为已接受并答复此问题:) –