我需要第二个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;
答案 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;