2014-05-01 72 views
1

好我有以下的for循環:操作/計算

public static void main(String []args){ 
     for (int i=2; i<12 ; i=i+2) 
     System.out.print(3-i%3); 
     System.out.println(); 
    } 

而且它打印出來:12312.爲了瞭解它是如何計算我試圖去解決它,並根據數字我的工作出來的第一個數字應該是實際2.

我很確定,我錯了我的想法,因爲BlueJ打印出第一個數字1. 但是爲什麼1?有人可以解釋嗎?

我在一張紙上寫下了如何理解/計算計算的方式,並拍下了它的照片,這樣您就可以看到我的工作是獲取數字2,也許您可​​以指出我的錯誤。

enter image description here

+0

_?'('% '是模數運算符) –

+5

可愛......筆記......永遠! :D –

+0

@ZouZou,感覺自由,並檢查我張貼的圖片,因爲它顯示了我的計算方式,我知道我犯了一個錯誤,但我不知道我的計算出了什麼問題。 – Acemi

回答

2

根據你的筆記,我想你誤解了for循環的行爲。

根據您的筆記,您在第一次迭代中將i替換爲4(2 + 2)。

for (int i=2; i<12 ; i=i+2) 

但是,對於第一迭代i將是2

initial value ; condition ; increment/decrements 

端每次迭代中第三塊的將執行(increment/decrements)。因此,對於第一次迭代,我將是2

3-i%3 w將是3-(2%3) =>3 - 2 => 1。

對於下一個迭代我會i = i+2 => 2 + 2 => 4那麼你的回答將「根據我的工作出來的第一個數字應爲實際2」 _`3-2%3 =是2

+0

是的謝謝你的建議,你在寫,我有點誤解了for循環如何實際計算。 – Acemi

3

根據我的工作出來的第一個數字應該是真正2.

檢查你的計算:2 % 3(其餘2除以3後)爲2 3 - 21,所以輸出是正確的。

請注意,操作不按照它們被寫出的順序執行:%具有比減法更高的優先級,因此它在減法之前執行。在這種情況下,這並不重要,但要牢記這一點很重要。