2017-06-05 65 views
-7
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); 

你能解释一下逻辑吗?越来越混淆这个解释这个循环导致java

+5

你知道'++ a'和'a ++'之间的区别吗?如果是这样,你的逻辑问题是什么? – RealSkeptic

+1

你得到的输出是什么,你期望的是什么? –

+0

我建议你阅读并理解预增量和增量后的操作符是什么,然后在一张纸上手动执行该程序的空运行,然后用PC o/p计算结果。这将清除你的概念。实践是关键! –

回答

0

I = 0 = 1(第一条件是假,从而第二被检查)B = 1

I = 1个α= 2(第一条件是假,从而第二被检查)B = 2

i = 2 ++ a增量a,a = 3条件为真如果条件成立并且a变为4并且b保持为2

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

在或(||)条件编译时遇到的真实情况就停止检查其他声明

0

情况下,这是五个迭代和结果的& 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. 
0

我觉得你的困惑可能来自++a VS a++。基本上,他们两人都将a的价值增加了​​1,这意味着a = a + 1

所不同的是++a先做增量再做比较,而a++先做比较再增加。

所以看你的代码:

  • 第一行:只声明变量ab,以及实例
  • 第三行:for循环将重复5次

第一次迭代: - 第四行:++a --->a == 1,然后将其与2进行比较,依此类推b,此处的表达式返回false,所以跳过线5

  • 9号线:在这里打印出a= 1 b=1

第二次迭代: - 第四行:++a --->a == 2,然后把它比作2,所以对b,这里的表达式返回false,所以跳过线5

  • 9号线:在这里打印出a= 2 b=2

第三次迭代:(后面的迭代中是相似的) - 第四行:++a --->a == 3,然后比较它2,所以对b,这里的表达式返回true,所以在达到第5行现在。

  • 5号线:a++ --->a == 4

  • 9号线:在这里打印出a= 4 b=3

希望有所帮助。

0

++ a表示在操作前a的当前值增加1(在这种情况下,比较a> 2前a增加1)a ++表示a的当前值增加1次手术后。 (在这种情况下,增加a的值,尽管没有任何操作)。

For循环不被任何事件中断.....所以,它循环5次(i = 0,1,2,3 ,4)。

对于i = 0 - > 电流B的α= 0,电流值的值= 0

如果(++一> 2 || ++ B> 2)

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

如果(1> 2 || 1> 2)

该语句是假的。所以去结束语句的末尾。

对于i = 1 - = 1

相同的值之前增加1之前比较 '一> 2',并且还与B A = 1时,当前B的值的>当前值。 (新A = 2,b = 2)

如果(2> 2 || 2> 2)

语句是假的。到if语句的结尾。

对于i = 2 - >电流的= 2,B = 2

增加的1值 - >一个= 3,并且还B = 3之前进行比较。

如果(3> 2 || 3> 2)

如果条件为真。然后

一个++

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

对于i = 3 - >的电流值的= 4,B = 3 增加a和b由1倍新的值(α= 4,B = 4)

如果(5> 2 || 4> 2)

true。然后

一个++

A = 6,B的新值保持相同(4)。

对于i = 4 - >的电流值的= 6,B = 4 增加A和B(7,5)

如果(7> 2 || 5> 2)

为真。然后

一个++

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

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

下一语句

的System.out.println( “A =” + A + “​​B =” + B)

显示“a = 8 b = 5”