Java 我的方法赢了';不要让我在遍历数组时留下for循环

Java 我的方法赢了';不要让我在遍历数组时留下for循环,java,for-loop,Java,For Loop,我有一种方法,可以将一辆新车(本田)添加到车辆数组中。阵列最多包含4辆车辆 Vehicle[] vehicles = new Vehicle[4]; 如果存在null值,则该方法应将1个新Vehicle对象添加到vehicles数组的末尾。问题是它正在写入数组中的所有null值,而不是只写入1,然后退出for循环 以下是我所拥有的(注意——我需要使用数组而不是ArrayList): public void addVehicle(车辆本田[])抛出FileNotFoundException {

我有一种方法,可以将一辆新车(本田)添加到
车辆
数组中。阵列最多包含4辆车辆

Vehicle[] vehicles = new Vehicle[4];
如果存在
null
值,则该方法应将1个新
Vehicle
对象添加到
vehicles
数组的末尾。问题是它正在写入数组中的所有
null
值,而不是只写入1,然后退出
for
循环

以下是我所拥有的(注意——我需要使用数组而不是
ArrayList
):

public void addVehicle(车辆本田[])抛出FileNotFoundException
{
布尔值=false;
如果(canAddVehicle()==真)
{
对于(int i=0;i
我设置了
found=true
,以确保它在数组中找到第一个
null
值后立即离开for循环。。但它似乎不起作用。为什么会这样


编辑:另外,我不允许有任何其他类级别的数据。

当您应该使用
&&
时,您正在使用
|

for(int i = 0; i < vehicles.length && !found; i++)
for(int i=0;i
有关条件运算符的更多信息,请参见

作为一种友好的批评,这对其他开发人员来说不是很容易理解。以下内容更容易理解:

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
    }
}
for(int i=0;i
而不是
for(int i=0;i
使用
for(int i=0;i


将or运算符
|
替换为and运算符
&&
。基本上,这是看到发现是真的,但我仍然少于车辆。长度,所以循环继续。使用
&&
时,两者都必须为true才能运行。

谢谢,我不知道您可以在for循环中使用中断
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
    }
}