如果for循环中的条件不断变化会发生什么?

时间:2018-01-03 11:29:05

标签: java for-loop arraylist

以下代码块的结果是什么?

Array

提供答案是因为循环永远不会运行。

但是对于[-1,3,28,17,9,33]的输入, 我得到[3,17,33]作为输出。这是什么意思?

2 个答案:

答案 0 :(得分:6)

每次迭代都会评估条件。 在列表的开头包含 [-1,3,28,17,9,33]   循环开始:

  • i = 0; 0&lt; 6为真,当前列表[ -1 ,3,28,17,9,33],删除了索引0(粗体)的元素,剩余[3,28,17,9,33] < / LI>
  • i = 1; 1&lt; 5为真,当前列表[3, 28 ,17,9,33],删除了索引1(粗体)的元素,剩余[3,17,9,33]
  • i = 2; 2&lt; 4是真的,当前列表[3,17, 9 ,33],删除了索引2(粗体)的元素,剩余[3,17,33]
  • i = 3; 3&lt; 3为假,循环结束,仍为[3,17,33]

答案 1 :(得分:1)

错误!只要条件仍然满足,循环就会运行。每次迭代都会产生一个新的场景,条件只是弯曲以适应新的值。

使用你的例子[-1,3,28,17,9,33]:

  • 第一次迭代:我是0 ... 0小于6 ..因此删除索引0( - 1)的元素

    结果arrraylist:[3,28,17,9,33]

  • 第二次迭代:我是1 ... 1小于5 ..因此删除索引1(28)的元素

    结果arrraylist:[3,17,9,33]

  • 第三次迭代:我是2 ... 2小于4.指数2(9)的元素因此被删除

    结果arrraylist:[3,17,33]

  • 第四次迭代:我是3 ... 3 小于3 ..迭代停止。

循环操作后,MyList arraylist将缩减为:

[3, 17, 33]

我希望这有帮助,快乐编码!