while循环布尔重新分配

时间:2015-08-02 02:47:20

标签: java

说我有这样的do-while循环:

public class Main {
    public static void main(String[] args) {
        boolean b = false;
        int i = 1;
        do {
            i++;
        } while (b = !b);
        System.out.println(i);
    }
}

什么会导致i增加三个?我可以理解这个循环将确保它至少运行一次,但在这种情况下,布尔值b被重新赋值为true,不会导致无限循环?

3 个答案:

答案 0 :(得分:2)

这里是你的代码的解释..

  • 初始值为b=false i=1;
  • 输入循环并增加i=2;
  • 检查while条件b=!b表示b=true;
  • 再次转到循环并增加i=3;
  • 选中while条件b=!b表示b=fase并退出 while循环
  • 现在来到SOPprint i的值为3 并退出程序

答案 1 :(得分:2)

在循环之前,i = 1b = false

----------+--------+--------+
Pass      | 1      | 2      |
----------+--------+--------+
i         | 2      | 3      |
----------+--------+--------+
b         | false  | true   |
----------+--------+--------+
condition | !false | !true  | //loop breaks
----------+--------+--------+

答案 2 :(得分:1)

这里有两点需要注意。 b=!b作为条件检查意味着分配b的补充值,然后检查条件满意度。正如我们所知,do-while循环至少执行一次,值为3。