2012-05-22 78 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