问:Headfirst Java for 循环练习(混合消息 CH5)
Q: Headfirst Java for-loop exercise (Mixed Messages CH5)
我一直在努力学习 Java Headfirst 书中的一个练习(CH5: p121 供参考)。这是另一个循环中的循环,adds/substracts 来自实例变量的一些值。
输入:
x = x + 3
输出:
x= 54 y = 6
public class MixFor5 {
public static void main(String[] args) {
int x = 0;
int y = 30;
for (int outer = 0; outer < 3; outer++) {
for (int inner = 4; inner > 1; inner--) {
x = x + 3;
y = y - 2;
if (x == 6) {
break;
}
x = x + 3;
}
y = y - 2;
}
System.out.println(x + " " + y);
}
}
我自己用记事本做的结果是 x=42 y = 8 因为这两个循环条件都满足了。我究竟做错了什么?我的思维过程哪里出了问题?
这些是我的笔记 -> pastebin note
我没有先尝试调试,因为我想先自己弄清楚,这样我以后就不会犯同样的错误了。
提前致谢,
tvanderv
if(x == 6)
永远不会成真。这背后的原因是,
当inner = 4
x = x + 3
执行两次即表示 x = 6
.
然后,inner = 3
现在第一个 x = x + 3
(在 if(x == 3)
条件之前)将给出输出 x = 9
。所以 x > 6
它不会中断循环。
你在笔记中做错了这一步。
我一直在努力学习 Java Headfirst 书中的一个练习(CH5: p121 供参考)。这是另一个循环中的循环,adds/substracts 来自实例变量的一些值。
输入: x = x + 3
输出: x= 54 y = 6
public class MixFor5 {
public static void main(String[] args) {
int x = 0;
int y = 30;
for (int outer = 0; outer < 3; outer++) {
for (int inner = 4; inner > 1; inner--) {
x = x + 3;
y = y - 2;
if (x == 6) {
break;
}
x = x + 3;
}
y = y - 2;
}
System.out.println(x + " " + y);
}
}
我自己用记事本做的结果是 x=42 y = 8 因为这两个循环条件都满足了。我究竟做错了什么?我的思维过程哪里出了问题?
这些是我的笔记 -> pastebin note
我没有先尝试调试,因为我想先自己弄清楚,这样我以后就不会犯同样的错误了。
提前致谢,
tvanderv
if(x == 6)
永远不会成真。这背后的原因是,
当inner = 4
x = x + 3
执行两次即表示 x = 6
.
然后,inner = 3
现在第一个 x = x + 3
(在 if(x == 3)
条件之前)将给出输出 x = 9
。所以 x > 6
它不会中断循环。
你在笔记中做错了这一步。