2016-01-13 48 views
-2
public static void main(String[] args) { 
    int b = 0, i; 
    for (i = 0; i < 10; i++) { 
     if (i % 5 <= 2) { 
      continue; 
     } 
     b += ++i; 
    } 
    System.out.print(b); 

爲什麼結果輸出是13?不是28?迭代爲if和continue

  • 迭代0,B = 0(5%0 = 0,則繼續;)
  • 迭代1,B = 0(5%1 = 1,繼續;)
  • 迭代2,B = 0 (5%2 = 2,繼續;)
  • 迭代3,b = 4(5%3 = 3,b + = ++ i;)
  • 迭代4,b = 9(5%4 = b + = ++ i;)
  • 迭代5,b = 9(5%5 = 0,繼續;)
  • 迭代6,b = 9(5%6 = 1,繼續;)
  • 迭代7,B = 9(5%7 = 2,繼續;)
  • 迭代8,B = 18(5%8 = 3,B + = ++ I;)
  • 迭代9,B = 28(5%9 = 4,b + = ++ I;)
+0

你正在遞增'我'兩次。 –

回答

1

i哪裏開始時49不發生,因爲在++ib += ++i;增加i的循環迭代。但是,這並不能阻止for循環增量操作i++的發生。這是真正的迭代序列:

  • 迭代0,I = 0,B = 0(0%5 = 0,則繼續;)
  • 迭代1,I = 1,B = 0(1%5 = 1,繼續;)
  • 迭代2,i = 2,b = 0(2%5 = 2,繼續;)
  • 迭代3,i = 3,b = 4(3%5 = 3,b + = ++ i; i is now 4)
  • iteration 4,i = 5,b = 4(5%5 = 0,continue;)
  • 迭代5,i = 6,b = 4(6 %5 = 1,繼續;)
  • 迭代6,i = 7,b = 4(7%5 = 2,繼續;)
  • 迭代7,i = 8,b = 13(8%5 = 3,b + = ++ i,i現在是9)
+0

哦,我明白了,所以我的價值也被增加了。謝謝! –

+0

'''5%n'''必須是'''n%5'''。 – saka1029

+0

@ saka1029我甚至沒有注意到問題中的順序錯誤!我在我的回答中更正了它。 – rgettman