2012-05-22 76 views
0

下面是我無法理解的代碼。輸出是13 15 x = 6。我知道我們如何得到數字13,因爲當我們通過循環時,x的值是5,其相應的y值是12.因此,如果x> 4,我們增加y,使得u的值爲13.下一個數字打印那麼應該是14,因爲x的下一個值是6,其相應的y值是13,所以當你增加時它將是14.然而,當我運行代碼時,它給出了不同的答案。任何人都可以幫忙嗎?謝謝瞭解一個循環,如果條件

public class Output { 
    public static void main(String[] args) { 
    Output o = new Output(); 
    o.go(); 
    } 


    void go() { 
    int y = 7; 
    for (int x = 1; x < 8; x++) { 
     y++; 
     if (x > 4) { 
      System.out.print(++y + " "); 
     } 
     if (y > 14) { 
      System.out.println(" x = " + x); 
      break; 
     } 
    } 
    } 
} ​ 
+2

如果您更仔細地格式化它,您的代碼將顯着更容易閱讀。 –

+2

您是否使用調試程序執行代碼? –

+0

對於初學者來說'如果'不是循環... – Kiril

回答

5

原因是因爲++ y在打印之前遞增y。

Ÿ++會做什麼,你期待

+0

從更普遍的意義上講,'++ y'是一個前綴操作,'y ++'是一個後綴操作。前綴操作在應用操作符後返回操作數,後綴在應用操作符之前返回操作數。 – vpiTriumph

0

當進入循環迭代,其中x6y13,如你所說。然後y立即增加到14x大於4,所以執行System.out.print(++y + " ");。在打印之前,++y增量爲y15