【问题标题】:Loop runs one more time than I expected循环比我预期的多运行一次
【发布时间】:2020-07-28 19:52:43
【问题描述】:
class BlankIt{  
    public static void main(String[] args) {
        int i = 10, j = 20;
        while(i++ < --j){
            System.out.println("\n " + i + " " + j);
        }
        System.out.println("\n " + i + " " + j);
    }   
}

前面的输出是16 14。为什么会这样??当条件达到15 &lt; 15 时循环停止。请帮帮我!!

【问题讨论】:

  • 您正在比较i 之前 递增的值与j 之后 递减的值。所以比较是 10 i 在比较后递增,因此最终值为 16 和 14。如您所见。
  • 请不要以实际重要的方式使用前置或后置增量,即在您使用其返回值的地方。尝试始终以明确的方式将其作为不在另一个中使用的语句。这样,读者就不会感到困惑了。

标签: java loops post-increment pre-increment


【解决方案1】:

i 的增量是后增量,将在比较评估之后发生,j,另一方面,作为前置减量将在比较评估之前发生:

10 < 19 (true)
11 < 18 ...
12 < 17 ...
13 < 16 ...
14 < 15 ...
15 < 14 (false) 

在评估最后一次比较后,i 将再增加一次,并将具有 16 的值,j 因为它已经减少了,所以将保持14

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多