Android java for循环突然中断
我正在运行以下代码:
public static Level getNextLevel(Context context, int id)
{
boolean found = false;
ArrayList<Level> levels = getLevels(context);
for(Level lvl : levels)
{
if (found)
{
return lvl;
}
if (lvl.id==id)
{
found=true;
}
}
return null;
}
当我跟踪它时,第二个if起作用,找到的变量变为true,然后进行另一次迭代,当它到达“if(find)”行时,我检查发现的变量为true,但它随后中断for块,而不是进入if块
ArrayList级别有5项,它发生在选中第一项之后
有什么建议可以解释为什么会发生这种情况吗
# 1 楼答案
您的方法getNextLevel()尝试在
ArrayList<Level> levels
中生成等于id
的项的后续项。但是如果id
与最后一个条目匹配,那么for循环结束,得到null
# 2 楼答案
你的代码看起来不错
您可以尝试以下循环来实现您想要实现的目标
# 3 楼答案
您说
found
在第一次迭代时变为true,然后在逻辑上下一次迭代将进入第一次if
并调用return l
,这意味着您的循环将停止所以问题是:第一次迭代是否应该将
found
设置为true# 4 楼答案
编辑: 在进一步检查您的问题之后,您似乎希望完全删除
return 1;
。由于for循环实际上进入了if (found)
块,但返回将强制它存在于循环和整个方法中# 5 楼答案
仅供参考,返回的“l”不是找到的“l” 因为它是在下一个循环中返回的,下一个循环是arraylist中的下一项
无论如何,我建议你这样做
我把l换成了lvl,这很清楚,在一些字体上它看起来像1和l