混淆这解释了这个循环结果在java中

时间:2017-06-05 10:00:40

标签: java

int a = 0, b = 0;

for (int i = 0; i < 5; i++) {
    if (++a > 2 || ++b > 2) {
        a++;
    }
}

System.out.println("a= " + a + " b=" + b);

你能解释一下这个逻辑吗?

4 个答案:

答案 0 :(得分:0)

i = 0 a = 1(第一个条件为假,因此第二个是检查)b = 1

i = 1 a = 2(第一个条件为假,因此第二个是检查)b = 2

i = 2 ++ a增量a,a = 3条件为真输入if条件且a变为4且b保持为2

类似地,i = 3 a = 6 b = 2并且i = 4 a = 8 b = 2;

如果编译器遇到真实条件时出现或(||)条件,则停止检查其他语句

答案 1 :(得分:0)

这是&amp; amp;的五次迭代和结果。 b终于。每一行都是循环中每次迭代的结果。

a     b
--------
1     1
2     2
4     2
6     2
8     2

++a > 2    means   increment a (by 1) first than compare with 2
++b > 2    means   increment b (by 1) first than compare with 2
a++        means   a=a+1;  means increment a by 1.

答案 2 :(得分:0)

我认为您的混淆可能来自++a vs a++。所以基本上,它们都会将a所携带的值增加1,这意味着a = a + 1

差异是++a将首先进行增量,然后进行比较,而a++将首先进行比较,然后进行增量。

看看你的代码:

  • 第一行:仅声明变量ab,并实例化
  • 第3行:for循环将迭代5次

第一次迭代: - 第4行:++a ---&gt; a == 1,然后将其与2进行比较,依此类推b,此处表达式返回false,因此请跳过第5行。

  • 第9行:此处打印出a= 1 b=1

第二次迭代: - 第4行:++a ---&gt; a == 2,然后将其与2进行比较,依此类推b,此处表达式返回false,因此请跳过第5行。

  • 第9行:此处打印出a= 2 b=2

第三次迭代:(后来的迭代类似) - 第4行:++a ---&gt; a == 3,然后将其与2进行比较,依此类推b,此处表达式返回true,因此现在就到达了第5行。

  • 第5行:a++ ---&gt; a == 4

  • 第9行:此处打印出a= 4 b=3

希望有所帮助。

答案 3 :(得分:0)

++ a表示在操作之前a的当前值增加1(在这种情况下,它在比较a> 2之前将a的值增加1) a ++表示操作后a的当前值增加1。 (在这种情况下,增加a的值,虽然没有操作。)

for循环不被任何东西打断.....所以,它循环5次(i = 0,1,2,3,4)。

表示i = 0 - &gt; 当前值a = 0,当前值b = 0

  

if(++ a&gt; 2 || ++ b&gt; 2)

在此语句中,a在与2比较之前增加1.因此当前值为0并且增加1.新值为1。 现在比较a(1)和2 ....同样的事情发生在b。

  

if(1> 2 || 1> 2)

该陈述是错误的。所以转到结束语句的末尾。

表示i = 1 - &gt;当前值a = 1,当前值b = 1

与比较之前a的值增加1相同'a&gt; 2'和b。(新a = 2,b = 2)

  

if(2> 2 || 2> 2)

声明是假的。到if语句的末尾。

表示i = 2 - &gt;当前值a = 2,b = 2

将a增加1 - >比较之前a = 3且b = 3。

  

if(3> 2 || 3> 2)

如果条件成立。然后

  

一个++

语句执行。 a = 4的新值.b的值保持不变(3)。

表示i = 3 - &gt;当前值a = 4,b = 3 将a和b增加1个新值(a = 4,b = 4)

  

if(5> 2 || 4> 2)

真。然后

  

一个++

a = 6的新值,b保持不变(4)。

表示i = 4 - &gt;当前值a = 6,b = 4。 增加a和b(7,5)

  

if(7> 2 || 5> 2)

真。然后

  

一个++

a = 8的新值,b保持不变(5)。

for循环的结束(i <5条件失败)

下一个声明

  

System.out.println(“a =”+ a +“b =”+ b)

显示“a = 8 b = 5”