跳到内容

元数据卡

  • 前置知识:全章内容——if/else、switch、while、for、break、continue
  • 预计时间:20 分钟
  • 完成标志:通过关卡

老陈搬了把椅子坐到井边,朝你招了招手。

"前面的都学完了?那试试真家伙。"

他把一块石板递给你,上面刻着四道题目——从热身到挑战,逐级加码。


常见陷阱——先看再动手

坑 1:死循环 + 条件永远不变

java
int i = 0;
while (i < 10) {
    System.out.println(i);
    // i 永远不会变——死循环!
}

每个循环至少保证有一条能让条件趋近 false 的语句。

坑 2:for 循环的分号位置

java
for (int i = 0; i < 10; i++); { // ← 分号不该在这里!
    System.out.println(i);
}

分号意味着空循环体——循环跑了十次,什么都没干。这是新手最隐蔽的 bug。

坑 3:switch 忘写 break

前面的穿透现象。如果用旧式 switch,每个 case 后面必须检查有没有 break。这也是为什么箭头语法一经推出就被广泛推荐。

坑 4:浮点数做循环条件

java
for (double x = 0.0; x != 1.0; x += 0.1) {
    System.out.println(x);
}
// 可能永远跑不完——0.1 累加永远不会精确等于 1.0

永远不用 ==!= 判断浮点数相等。循环条件用 <> 代替。


热身(5 分钟)

猜输出(不运行):

java
int x = 0;
while (x < 5) {
    x++;
    if (x == 3) continue;
    System.out.print(x + " ");
}

提示continue 会跳过本次循环的剩余代码。x 从 0 开始,每次循环先 ++ 再判断。


构建练习:99 乘法表(15 分钟)

写一个程序打印 99 乘法表

1 × 1 = 1
1 × 2 = 2    2 × 2 = 4
1 × 3 = 3    2 × 3 = 6    3 × 3 = 9
...

提示:需要嵌套两个 for 循环,外层遍历行(1 到 9),内层遍历列(1 到当前行号)。

java
// 骨架
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(j + " × " + i + " = " + (i * j) + "\t");
    }
    System.out.println(); // 换行
}

挑战:猜数字游戏(选做,15 分钟)

写一个"猜数字"游戏:程序随机生成一个 1-100 的整数,用户循环输入猜测。每次提示"猜大了"或"猜小了",猜中后输出用了多少次。

java
// 需要 random 和 Scanner
int target = (int)(Math.random() * 100) + 1; // 1 到 100 的随机数
Scanner scanner = new Scanner(System.in);

// 你的代码写在这里

Scanner 和用户输入机制在第 15 章 I/O 会展开,这里你可以先抄这段模板玩起来。)

扩展思路:猜中后问"再来一局?",用户输入 y 重新开始。


验收标准

  • [ ] 能用 if/else if/else 实现多路分支逻辑
  • [ ] 能用 switch 替代多路 if-else 并理解穿透和 break
  • [ ] 能用 while 和 for 实现循环,能区分两者的适用场景
  • [ ] 知道 do-while 至少执行一次的特点
  • [ ] 能用 break 提前退出循环,用 continue 跳过当前迭代
  • [ ] 能识别和修复死循环
  • [ ] 知道为什么不要在循环条件中用浮点数判等

旅人笔记

控制流是程序的骨架:if/else 做选择,switch 做多路分支,for/while/do-while 做重复。break 跳出,continue 跳过。死循环要修,花括号要写,switch 的 break 别忘了。

你现在写的每一行代码都有了"生命"——它会判断、会重复、会选择何时停下。

→ 下一章预告

选择会了,重复会了。但老陈在村口摊开一张羊皮纸,上面画了一棵树——层层叠叠的节点,每个节点又分出几个分支。他说:"你会用刚才学的所有知识来爬这棵树——递归,让你的函数自己调用自己。"

那是第5章的事。在此之前,先把控制流练熟——这个基础打不牢,后面的高塔也爬不上去。

第5章:方法与递归

Built with VitePress | Software Systems Atlas