我得到了这个函数,它是一个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

10-08 01:59