我有一种方法可以将新车(本田)添加到vehicles
阵列。该阵列最多包含4辆车。
Vehicle[] vehicles = new Vehicle[4];
如果有Vehicle
值,则该方法应该在vehicles
数组的末尾添加1个新null
对象。问题是它正在写入数组中的所有null
值,而不是只写入1然后踢出for
循环。
这就是我所拥有的(注意 - 我需要使用数组而不是ArrayList
):
public void addVehicle(Vehicle Honda[]) throws FileNotFoundException
{
boolean found = false;
if(canAddVehicle() == true)
{
for(int i = 0; i < vehicles.length || !found; i++)
{
if(vehicles[i] == null)
{
Scanner reader = new Scanner(file);
Honda[i] = new Vehicle();
Honda[i].readRecord(reader);
vehicles[i] = Honda[i];
reader.close();
found = true;
}
}
System.out.println("Vehicle Added!");
}
}
我已设置found = true
以确保它在找到数组中的第一个null
值后立即离开for循环..但它似乎不是工作。为什么会这样?
编辑:此外,我不允许拥有任何其他班级数据。
答案 0 :(得分:7)
当您使用||
时,您正在使用&&
:
for(int i = 0; i < vehicles.length && !found; i++)
有关条件运算符的更多信息,请参见this Java Tutorials article。
作为一个友好的批评,这对另一个开发人员来说不太可读。以下更容易理解:
for(int i = 0; i < vehicles.length; i++)
{
if(vehicles[i] == null)
{
Scanner reader = new Scanner(file);
Honda[i] = new Vehicle();
Honda[i].readRecord(reader);
vehicles[i] = Honda[i];
reader.close();
break; //break out of the loop
}
}
答案 1 :(得分:1)
而不是for(int i = 0; i < vehicles.length || !found; i++)
使用for(int i = 0; i < vehicles.length && !found; i++)
使用和运算符||
替换或运算符&&
。基本上它是看到发现是真的,但我仍然不到车辆。所以循环继续。使用&&
时,两者都必须为true才能运行。