我在操作以下循环时遇到了非常困惑的时间:
int indexPos;
for(indexPos = 0; indexPos < size; indexPos++) {
System.out.println(indexPos + "!");
if(sourceModuleValue < controlPoints.get(indexPos).inputValue) {
break;
}
}
System.out.println(indexPos + "?");
我在println
中添加了,所以我可以看到为什么会出错。其他一些注意事项:在我的计划中,size = 7
和controlPoints
是ArrayList
,但我不认为导致我的问题是什么。这是读数:
0!
1!
2!
3!
3?
0!
1!
2!
2?
0!
1!
2!
3!
4!
5!
6!
6?
0!
1!
1?
0!
1!
1?
0!
1!
2!
3!
4!
5!
6!
6?
0!
1!
2!
3!
4!
4?
0!
1!
1?
0!
1!
1?
0!
1!
2!
2?
0!
1!
2!
3!
4!
5!
6!
7?
据我所知,这个循环永远不会输出indexPos
大于6
的值,因为我认为这是for
循环的方式工作。 controlPoints
可以get
循环内的值,但在break
之后,数字会再次递增。我认为这个数字在循环结束之前不会增加?这是错的吗?我应该加入预增量而不是后增量吗?
答案 0 :(得分:4)
当for
循环结束时,indexPos
的值是上限
for(indexPos = 0; indexPos < size; indexPos++)
上一次for
执行时,indexPos
会增加。由于它不符合indexPos < size
条件,因此不执行循环
这说明如果break
循环内没有调用for
,则indexPos
的值是for
循环中不可能的值,此处等于size
,即7
(这与C中的行为相同,因为此构造继承自C语言)