有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

访问初始化对象的内部对象属性时发生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) 个答案

  1. # 1 楼答案

    I thought that when creating a new car, it would create the tires too

    计算机是愚蠢的。你没有告诉它在汽车制造时制造轮胎,所以它没有为你制造轮胎。这就是为什么当你试图接近轮胎时,会抛出一个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();
        }
    }