04 流程控制¶
本章目标¶
- 掌握 if / else if / else 条件判断
- 掌握 switch 分支
- 掌握 for / while / do-while 循环
- 掌握 break 与 continue
程序默认从上往下顺序执行,流程控制就是让程序"有选择地"执行、或"重复地"执行。
4.1 if 条件判断¶
基本形式¶
int age = 17;
if (age >= 18) {
System.out.println("成年了");
} else {
System.out.println("未成年");
}
多分支¶
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
if 的判断顺序
从上往下匹配,命中一个就结束,后面的不再判断。所以条件要按范围从窄到宽或从大到小写。
省略大括号¶
if (age >= 18)
System.out.println("成年"); // 只有一行时可以省略 {}
新手建议永远写大括号,防止以后加代码加错位置。
4.2 switch 分支¶
适合"一个变量有多个固定取值"的情况:
int day = 3;
switch (day) {
case 1:
System.out.println("周一");
break; // 别忘了 break!
case 2:
System.out.println("周二");
break;
case 3:
System.out.println("周三");
break;
default:
System.out.println("其他");
}
fall-through(穿透)
如果不写 break,会继续执行下一个 case!这是新手最容易犯的错。比如上面 case 3 不写 break,会连 "周四" 的逻辑一起执行。
switch 表达式(Java 14+,推荐写法)¶
String dayName = switch (day) {
case 1 -> "周一";
case 2 -> "周二";
case 3 -> "周三";
default -> "其他";
};
System.out.println(dayName);
-> 写法不需要 break,更安全更简洁。Forge 1.20.1 用 Java 17,完全支持。
4.3 for 循环¶
基本形式¶
for (int i = 0; i < 5; i++) {
System.out.println("第 " + i + " 次");
}
第 0 次
第 1 次
第 2 次
第 3 次
第 4 次
结构拆解:
for (初始化; 条件; 步进) {
循环体
}
- 初始化:
int i = 0(只执行一次) - 条件:
i < 5(每次循环前检查,false 就退出) - 步进:
i++(每次循环体结束后执行)
从大到小¶
for (int i = 10; i >= 0; i -= 2) {
System.out.println(i); // 10 8 6 4 2 0
}
增强 for(遍历集合,第 11 章常用)¶
String[] names = {"小明", "小红", "小刚"};
for (String name : names) {
System.out.println(name);
}
4.4 while 与 do-while¶
while:先判断后执行(可能一次都不执行)¶
int hp = 100;
while (hp > 0) {
hp -= 30;
System.out.println("受到伤害,剩余 HP: " + hp);
}
do-while:先执行后判断(至少执行一次)¶
int n = 0;
do {
System.out.println("n = " + n);
n++;
} while (n < 3);
4.5 break 与 continue¶
break:跳出整个循环continue:跳过本次循环,继续下一次
for (int i = 1; i <= 10; i++) {
if (i == 3) continue; // 跳过 3
if (i == 7) break; // 到 7 就停止
System.out.println(i); // 1 2 4 5 6
}
死循环怎么退出¶
while (true) {
// 游戏循环、监听循环等
if (条件) break; // 必须有出口!
}
模组里经常用死循环 + break 的写法(比如不断尝试连接、不断查找)。
4.6 实战:模组场景¶
写一个"按 tick 执行"的逻辑(游戏 20 tick = 1 秒):
// 模拟:每 20 tick 恢复 1 点生命
int tick = 0;
while (tick < 100) {
tick++;
if (tick % 20 != 0) continue; // 不是整秒就跳过
System.out.println("恢复 1 点生命,tick = " + tick);
}
4.7 小练习¶
- 用 for 循环打印 1 到 100 的所有偶数
- 用 while 循环计算 1+2+...+100 的和
- 用 switch 把数字 1-7 转成中文星期
- 打印 9×9 乘法表(提示:嵌套 for 循环)
本章小结¶
- if-else 处理范围判断,switch 处理固定取值
- for 适合"知道次数",while 适合"不知道次数"
- break 跳出循环,continue 跳过本次
- switch 的
->写法更安全
下一章:05 数组