2017-06-05 75 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」