Head First Java第2版 - 第118页,第5章

时间:2013-09-19 11:17:30

标签: java

我正在进行一项名为jvm的练习。

然而,我应该得到的输出与我的方法完全不同。

我达到15岁,我的x是7。

但输出应显示13 15 x = 6;

以下是代码:

 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;  
            } // close if   
        }  // close for  
    }  // close go  
} // close class  

有人可以跟我一起浏览代码,并告诉我哪里出错了吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

好的,

您首先使用新输出调用方法go()

当此方法运行时,您有两个变量y=7x=1x循环中定义的for

注意for循环的格式,它表示x初始化为1,并且只会持续到x < 8,这意味着何时x==7,STOP。如果x EQUAL 为8,则不要在循环中处理任何内容。

每个循环按x

的定义将x++递增1

所以,从一开始就逐步完成循环,其中x== 1y==7y增加一(y++)。

现在我们有x==1y==8

我们可以忽略接下来的两个if语句,因为x小于4且y小于14,所以回到for循环的开头,不要忘记将x加1。

因此对于第二个循环,我们有: x==2 y==9

第三循环: x==3 y==10

第四循环: x==4 y==11&lt; - x现在是4,但 GREATER 不是4.所以在下一个循环中我们需要输入if(x>4)循环。

第五循环: x==5 y==12(立即为y++)但我们现在进入x>4的循环,因此我们++y这可能是你犯了错误的地方

++yy++类似,但递增值,然后计算并存储它,而不是评估值,然后递增并存储它。

此输出13,现在y==13

第六循环: 与第五个循环相同(逻辑上,输入第一个if语句!) x==6 y==13

输出15,现在是y==15,所以我们可以进入最后一个循环,所以我们为这个循环输出x的值,

这是6。

然后我们爆发,结束了。

所以输出应该是13 15 x=6。我希望这会有所帮助,只需了解++yy++之间的区别。

答案 1 :(得分:0)

我有这个:

x | y      | output
1 | 8      |
2 | 9      |
3 | 10     |
4 | 11     |
5 | 12, 13 | 13
6 | 14, 15 | 15 x = 6

希望它能帮助你找到错误