0

我正在做一个叫做成为 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  

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

谢谢您的帮助!

4

2 回答 2

2

好的,

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

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

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

每个循环递增x一,定义为x++

因此,从头开始逐步执​​行循环,其中x== 1y==7 递增y一 ( y++)。

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

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

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

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

第四个循环: x==4 y==11<-x现在是 4,但不大于4。所以在下一个循环中,我们需要进入if(x>4)循环。

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

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

这输出 13 和 now y==13

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

输出 15 和 now y==15,所以我们可以进入最后的循环,所以我们输出x这个循环的值,

这是6。

然后我们爆发,这就是结束。

所以输出,应该是13 15 x=6++y我希望这会有所帮助,请注意和之间的区别y++

于 2013-09-19T11:37:17.107 回答
0

我有这个:

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

希望它能帮助你找到你的错误

于 2013-09-19T11:32:18.920 回答