我得到了这个函数,它是一个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小号,因为列表中已经有那么大的车。
答案 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()方法检查大小。