Head第一版Java第二版-第118页,第5章

Head第一版Java第二版-第118页,第5章,java,Java,我正在进行一个名为“成为jvm”的练习 然而,我应该得到的结果与我计算出来的结果完全不同 我的y是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;

我正在进行一个名为“成为jvm”的练习

然而,我应该得到的结果与我计算出来的结果完全不同

我的y是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  
类输出{
公共静态void main(字符串[]args){
输出o=新输出();
o、 go();
}  
void go(){
int y=7;
对于(intx=1;x<8;x++){
y++;
如果(x>4){
系统输出打印(++y+);
}  
如果(y>14){
System.out.println(“x=”+x);
打破
}//如果关闭,则关闭
}//关闭
}//关上
}//关闭类
有人能和我一起浏览一下代码,告诉我哪里出了问题吗

谢谢你的帮助

我有这个:

x | y      | output
1 | 8      |
2 | 9      |
3 | 10     |
4 | 11     |
5 | 12, 13 | 13
6 | 14, 15 | 15 x = 6
希望它能帮你找到你的错误

好的

从一个新的输出开始调用方法
go()

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

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

每个循环按照
x++

因此,从一开始就通过循环,其中
x==1
y==7
y
增加一(
y++

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

如果
x
小于4且
y
小于14,那么我们可以忽略接下来的两个
,因此回到for循环的开始,不要忘记将
x
增加1

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

第三圈:
x==3
y==10

第四圈:
x==4
y==11
4)
循环

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

++y
y++
类似,但增加值,然后计算并存储它,而不是计算值,然后增加并存储它

这将输出13,现在
y==13

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

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

也就是6

然后我们爆发,就这样结束了


因此,输出应该是
13 15 x=6
。我希望这有帮助,只是要注意
++y
y++

之间的区别,您的评论似乎有问题。是否考虑过自己使用step调试器?\u x?我只关心在命令行CARE中编写它来解释您试图用所编写的代码解决的问题?如何达到
x=8
?x最多可以是7,但通过逐步执行此代码,您只能达到6。耐心点,照程序说的做,把当前的变量值记录到一张纸上。你是怎么得到8的?我以为y++是一个后递增器。@user1156596,在
y=0之后;x=y++
您得到
y==1
x==0
。你误解了后增量是什么。与其说我误解了后增量是什么,浪费了你的时间,也许你可以解释一下两者之间的区别,以利于我和其他阅读的人。你没有义务这么做,但请不要把时间浪费在侮辱上me@user1156596,别这么无礼,这里没有人贬低你。如果您认为在下一个循环迭代中增加后增量,您需要更仔细地阅读或阅读另一本书。没有冒犯的意思,只是一个建议,实践是完美的。这是有史以来最具建设性的回应之一。谢谢你的帮助Moedig,其他人似乎都在抨击我。我明白我错在哪里了。我认为y++意味着后期增量,如中所示,只显示y的值,并在第二个循环中增加到8。