问: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 它不会中断循环。

你在笔记中做错了这一步。