我正在进行一项名为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
有人可以跟我一起浏览代码,并告诉我哪里出错了吗?
感谢您的帮助!
答案 0 :(得分:1)
好的,
您首先使用新输出调用方法go()
。
当此方法运行时,您有两个变量y=7
和x=1
(x
循环中定义的for
。
注意for
循环的格式,它表示x
初始化为1,并且只会持续到x < 8
,这意味着何时x==7
,STOP。如果x
EQUAL 为8,则不要在循环中处理任何内容。
每个循环按x
x++
递增1
所以,从一开始就逐步完成循环,其中x== 1
和y==7
将y
增加一(y++
)。
现在我们有x==1
和y==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
。 这可能是你犯了错误的地方
++y
与y++
类似,但递增值,然后计算并存储它,而不是评估值,然后递增并存储它。
此输出13,现在y==13
。
第六循环:
与第五个循环相同(逻辑上,输入第一个if语句!)
x==6
y==13
输出15,现在是y==15
,所以我们可以进入最后一个循环,所以我们为这个循环输出x
的值,
这是6。
然后我们爆发,结束了。
所以输出应该是13 15 x=6
。我希望这会有所帮助,只需了解++y
和y++
之间的区别。
答案 1 :(得分:0)
我有这个:
x | y | output
1 | 8 |
2 | 9 |
3 | 10 |
4 | 11 |
5 | 12, 13 | 13
6 | 14, 15 | 15 x = 6
希望它能帮助你找到错误