首页 > 解决方案 > 循环比我预期的多运行一次

问题描述

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 < 15。请帮帮我!!

标签: javaloopspost-incrementpre-increment

解决方案


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

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

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


推荐阅读