访问初始化对象的内部对象属性时发生java NullPointerException
我有两个类,汽车和轮胎,具有以下功能
轮胎:
public static class Tire{
public boolean isBroken;
public int milesLeft;
public Tire(){
isBroken = false;
milesLeft = 100;
}
public void copyTire(Tire anotherTire){
isBroken = anotherTire.isBroken;
milesLeft = anotherTire.milesLeft;
}
public int getMilesLeft(){
return milesLeft;
}
}
汽车
public static class Car{
public boolean maintenance;
public String name;
public Tire tires[] = new Tire[MAX_TIRES];
public Tire LF = new Tire();
public Car(String name){
maintenance = false;
this.name = name;
}
public String getName(){
return name;
}
}
我的问题是,我想打印汽车阵列中所有轮胎的信息(milesLeft)。我以为只要使用for循环就可以了,但事实并非如此,我也不知道为什么
这就是我所尝试的:
for(int i = 0; i < MAX_TIRES; i++){
System.out.println("Tire nº"+i+": "+ i20.tires[i].getMilesLeft());
}
虽然只打印了一个轮胎,但如果我们在汽车类中,就没有问题了
<>你可能看到的其他错误也写了,我已经学习了C++,但是我从java开始。p>编辑:
错误:
线程“main”java中出现异常。lang.NullPointerException 在车辆上。主(车辆.java:56)
具有“主”功能的车辆声明
public static void main(String []args) {
Car i20 = new Car("i20");
System.out.println("The name is " + i20.getName());
System.out.println("The tires' status right now is:");
for(int i = 0; i < MAX_TIRES; i++){
System.out.println("Tire nº"+i+": "+ i20.tires[i].getMilesLeft());
}
}
# 1 楼答案
计算机是愚蠢的。你没有告诉它在汽车制造时制造轮胎,所以它没有为你制造轮胎。这就是为什么当你试图接近轮胎时,会抛出一个
NullPointerException
。轮胎还没有制造出来创建汽车后,还要创建轮胎:
现在轮胎已经制造出来了。然后可以使用for循环打印轮胎
您还可以将此轮胎创建代码放入构造函数中。您的
Car
类的构造函数可以如下所示: