我得到了这个函数,它是一个private boolean
函数,用于检查车库内是否已经有相同大小的汽车。如果没有,我将其添加到arrayList
类型的函数中,然后遍历printList()
并打印出值(完美运行),但是以某种方式我的arraylist
函数没有似乎工作。
这是我的代码:
public class Cars {
public Cars (String size, boolean booking) {
this.carSize = size;
this.isBooked = booking;
}
public String getSize() {
return this.carSize;
}
public boolean checkBook () {
return this.isBooked;
}
private String carSize;
private boolean isBooked;
}
public class Locations {
public Locations (String curLocation) {
garage = new ArrayList<Cars>();
location = curLocation;
}
public void addCar (String size, boolean booking) {
if (garage.isEmpty() || !checkCar(size)) {
garage.add(new Cars(size, booking));
System.out.println("Car assigned " + location + " " + size);
}
}
private boolean checkCar (String size) {
for (Cars car : garage) {
System.out.println("hey");
if (size.equals(car.getSize())) return true;
}
return false;
}
private ArrayList <Cars> garage;
private String location;
}
输入如下:
Car small City
Car small Redfern
Car small Redfern
输出:
Car assigned City small
Car assigned Redfern small
Car assigned Redfern small
它永远不要打印出第二个Redfern小号,因为列表中已经有该尺寸的汽车。
最佳答案
(我以前的回答是错误的-我匆忙地读了代码...)
对于发生的事情,我只能想到一种解释:
您已经两次呼叫new Locations("Redfern")
。
这将解释为什么您两次看到Car assigned Redfern small
消息,以及为什么没有看到hey
。
您可以通过在Locations
构造函数中放置跟踪记录来确认这一点...
由size
字符串之一上的前导/尾随空白引起的理论并不成立。如果这是问题所在,则OP将在hey
方法迭代checkCar
列表时看到garage
。