我的for循环是怎么回事?

时间:2016-08-20 19:53:45

标签: java for-loop

我在操作以下循环时遇到了非常困惑的时间:

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 = 7controlPointsArrayList,但我不认为导致我的问题是什么。这是读数:

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之后,数字会再次递增。我认为这个数字在循环结束之前不会增加?这是错的吗?我应该加入预增量而不是后增量吗?

1 个答案:

答案 0 :(得分:4)

for循环结束时,indexPos的值是上限

for(indexPos = 0; indexPos < size; indexPos++)

上一次for执行时,indexPos会增加。由于它不符合indexPos < size条件,因此不执行循环

这说明如果break循环内没有调用for,则indexPos的值是for循环中不可能的值,此处等于size,即7

(这与C中的行为相同,因为此构造继承自C语言)