Java for循环需要从它停止的地方开始

时间:2016-12-13 21:36:11

标签: java arrays for-loop arraylist methods

我需要第二个for循环来拾取它离开的地方。每次if语句为true时,我都需要一个插槽来填充第一个for循环中使用的数组。但是我不希望继续添加相同的键值。我需要第二个for循环移动到下一个键值。 (在下面的代码中,arrl是具有值的对象的ArrayList

int temp = 0;
int count = 0;
for(int i = 0; i < eeVal.length; i++)
{
    count= 0;
    for(int j = temp; j < arrl.size(); j++)
    {
        if(arrl.get(j).getValue() == 1 && count == 0)
        {
            eeVal[i] = arrl.get(j);
            count++;
            temp=j;
        }
    }
}
}
return eeVal;

4 个答案:

答案 0 :(得分:2)

您需要另一个变量来跟踪内部循环的位置。如下所示:

int temp = 0;

for(int i = 0; i < eeVal.length; i++)
{
    for(int j = temp; j < arrl.size(); j++)
    {
        if(arrl.get(j).getValue() == 1)
        {
            eeVal[i] = arrl.get(j);
        }
      temp=j;
    }
}
}
return eeVal;

这样,一旦外循环第二次运行,内循环将从'temp'开始直到循环结束。

答案 1 :(得分:0)

根据你的解释,听起来你不想要内部for循环。 arrl的遍历需要使用变量手动控制,例如.cnt&#39;只有在满足增加条件时才会增加。

答案 2 :(得分:0)

您可能正在寻找的是List

在你的回答中,你不需要第一个循环。这个问题虽然有问题 - 索引i可能超出范围。

int i = 0;
for(int j = 0; j < arrl.size(); j++) {
    if(arrl.get(j).getValue() == 1) {
        eeVal[i++] = arrl.get(j);
    } 
} 
return eeVal;

您需要的是动态集合,例如List。 使用list(我将类型称为MyType)。

List<MyType> vals = new ArrayList<>();
for(MyType item : arrl) {
    if(item.getValue() == 1) {
        vals.add(arrl.get(j));
    } 
} 
return vals.toArray(new MyType[vals.size()]);

答案 3 :(得分:0)

代码正在拾取最后一个正确值的位置。当我想要了解我离开的地方时,我需要添加1到j。

int count2 = 0;
int progress = 0;
for(int i = 0; i < retVal[h].length; i++)
{
    count2 = 0;
    for(int j = progress; j < arr.size(); j++)
    {
        if(arr.get(j).getLevel() == h && count2==0)
        {
            retVal[h][i] = arr.get(j);
            count2++;
            progress = j+1;
        }
    }
}
return retVal;