我有两个班级,Car和Tire,有以下功能。
胎:
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());
}
在印刷唯一的轮胎时,我们在车上的LF,没有问题。
你可能看到的任何其他错误都写了它们,我已经研究过c ++,但我从Java开始。
编辑:
错误:
线程中的异常&#34; main&#34;显示java.lang.NullPointerException 在vehicles.main(vehicles.java:56)
使用&#39; main&#39;功能
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());
}
}
答案 0 :(得分:2)
我认为在制造新车时,它也会制造轮胎
计算机很愚蠢。你没有告诉它在创建汽车时创造轮胎,所以它没有为你做。这就是为什么当你试图进入轮胎时,会抛出NullPointerException
。轮胎尚未创建!
创建汽车后,还要创建轮胎:
Car i20 = new Car("i20");
for (int i = 0 ; i < i20.tires.length l i++) {
i20.tires[i] = new Trie();
}
现在轮胎已经创建了。然后你可以使用for循环打印轮胎。
您也可以将此轮胎创建代码放在构造函数中。您的Car
类'构造函数可能如下所示:
public Car(String name){
maintenance = false;
this.name = name;
for (int i = 0 ; i < this.tires.length ; i++) {
this.tires[i] = new Tire();
}
}