我有两个类:Car 和 LearnArrayList。 Car 是封装类,具有如下属性:制造商、变速箱、ps、燃料类型、静态 carID(此变量存在问题)。我在 Car 构造函数语句中放入了将 carID 增加 1 (carID++) 的内容。我创建了这样一个代码来学习 arrayList:
public class LearnArrayList implements FutureFunctionality {
public static void main(String[] args) {
LearnArrayList learn = new LearnArrayList();
learn.createObjects();
learn.getInfo();
}
List<Car> listOfCars = new ArrayList();
public void createObjects() {
Car bmw = new Car("bmw", "mechanic", 200, "diesel");
Car ford = new Car("ford", "automatic", 150, "petrol");
Car vw = new Car("vw", "mechanic", 120, "petrol");
Car audi = new Car("audi", "mechanic", 100, "petrol");
Car mercedes = new Car("mercedes", "mechanic", 200, "diesel");
Car opel = new Car("opel", "automatic", 105, "petrol");
Car toyota = new Car("toyota", "mechanic", 103, "petrol");
Car renault = new Car("renault", "automatic", 100, "diesel");
Car dacia = new Car("dacia", "mechanic", 250, "petrol");
Car lada = new Car("lada", "mechanic", 80, "petrol");
Car[] cars = { bmw, ford, vw, audi, mercedes, opel, toyota, renault, dacia, lada };
for (int i = 0; i < cars.length; i++) {
addToArrayList(cars[i]);
}
}
@Override
public void addToArrayList(Car car) {
listOfCars.add(car);
}
@Override
public void getInfo() {
for (int i = 0; i < listOfCars.size(); i++) {
System.out.println(listOfCars.get(i).toString());
}
}
}
我的输出应该是 10 条记录。我希望每辆车都有一个唯一的 ID,但是当我运行一个程序时,每辆车的结果总是 10。我想让 bmw 是 1,ford 是 2,vw 是 3 等等。
一些输出:
车辆 ID:10 制造商:bmw 变速箱:机械师 PS:200 燃料类型:柴油
汽车 ID:10 制造商:福特 变速箱:自动 PS:150 燃料类型:汽油
汽车 ID:10 制造商:vw 变速箱:机械师 PS:120 燃料类型:汽油
汽车 ID:10 制造商:audi 变速箱:机械师 PS:100 燃料类型:汽油
最佳答案
您应该使 carID
成为非静态的,并创建一个单独的静态变量作为自动增量,例如,nextCarID
。然后您可以通过 this.carID = nextCarID++;
填充 carID
。
关于java - 如何在我的代码中正确使用静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961393/