比较两个字符串的Java似乎不起作用

时间:2011-08-21 02:54:21

标签: java arraylist variable-assignment

我得到了这个函数,它是一个private boolean函数,用于检查车库内是否有相同尺寸的汽车。如果没有我将它添加到arrayList,我之前已经创建了一个printList()类型函数来遍历arraylist并打印出值(这完全有效)但不知何故我的private boolean函数似乎根本不起作用。

继承我的代码:

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小号,因为列表中已经有那么大的车。

3 个答案:

答案 0 :(得分:1)

(我之前的回答是错误的 - 我在匆忙中误读了代码......)

我只能想到正在发生的事情的一种解释:

  

您已拨打new Locations("Redfern")两次。

这可以解释为什么您看到消息Car assigned Redfern small两次,以及为什么您没有看到hey

您可以通过在Locations构造函数中添加跟踪图...

来确认这一点

这是由size字符串之一的前导/尾随空格引起的理论并不成立。如果这是问题,则OP会看到hey,因为checkCar方法迭代了garage列表。

答案 1 :(得分:1)

如果我按以下方式使用您的代码:

public class Main
{
    public static void main( String[] args )
    {
        Locations locationsCity = new Locations( "City" );
        locationsCity.addCar( "small", true );
        Locations locationsRedfern = new Locations( "Redfern" );
        locationsRedfern.addCar( "small", true );
        locationsRedfern.addCar( "small", true );
    }
}

这是我得到的输出:

Car assigned City small
Car assigned Redfern small
hey

看起来很好,根据你的代码。

答案 2 :(得分:0)

考虑将你的汽车放在一个集合中并实现equals()以使用String.equals()方法检查大小。