元数据卡
- 前置知识:while 循环、for 循环
- 预计时间:10 分钟
- 完成标志:能用
break提前退出循环,用continue跳过当前迭代
你在矿洞里挖铁矿,一个铁镐敲下去——哐!
你面前有一条矿脉横贯洞壁,你想一直挖,直到你听到地面传来一声钟响(收工信号)。或者——你不想在这块地方挖个没完,想跳过那些空石头。
这就是循环里的两个关键操作:提前结束和跳过一次。
break——直接结束循环
// 寻找矿脉中的第一块铁矿
for (int i = 0; i < 100; i++) {
if (i == 7) { // 第 7 块是铁矿
System.out.println("找到铁矿!位置:" + i);
break; // 找到了,不用继续
}
System.out.println("探矿中……位置 " + i);
}语言:Java 预期输出:探矿 0 到 6,位置 7 时"找到铁矿"然后结束,不继续探 8 到 99
break:立即跳出当前循环,不再执行后续所有迭代。
Python 差异:
break行为和 Java 完全一致。但 Python 有for...else——如果循环正常结束(没被break),执行else分支。Java 没有这个语法。
C++ 差异: 完全一致。C 语言系兄弟在这个层面没有分歧。
continue——跳过当前这一次
// 显示 1 到 10,但跳过 5
for (int i = 1; i <= 10; i++) {
if (i == 5) {
continue; // 跳过这次,直接进入 i++
}
System.out.println(i);
}语言:Java 预期输出:1 2 3 4 6 7 8 9 10(没有 5)
continue:跳过本次循环的剩余代码,直接进入下一次迭代的条件判断。
两者对比:
| 指令 | 做什么 | 用在哪里 |
|---|---|---|
break | 整个循环结束 | 找到了,不用再找了 |
continue | 只跳过当前这次 | 这次不合条件,试下一个 |
嵌套循环与带标签的 break
有时候你有一个循环套另一个循环——比如遍历每一块地,每块地里再翻每一块石头:
outer: // ← 这是标签
for (int plot = 0; plot < 3; plot++) {
for (int rock = 0; rock < 5; rock++) {
if (rock == 2 && plot == 1) {
System.out.println("在第 " + plot + " 区第 " + rock + " 块石头下发现宝藏!");
break outer; // ← 直接跳出外层循环
}
System.out.println("翻找:第 " + plot + " 区,第 " + rock + " 块石头");
}
}语言:Java 预期输出:
翻找:第 0 区,第 0 块石头
翻找:第 0 区,第 1 块石头
翻找:第 0 区,第 2 块石头
翻找:第 0 区,第 3 块石头
翻找:第 0 区,第 4 块石头
翻找:第 1 区,第 0 块石头
翻找:第 1 区,第 1 块石头
在第 1 区第 2 块石头下发现宝藏!发现宝藏后直接跳出两层循环,不再翻剩余石头,也不翻第 2 区。
没有标签的 break 只跳出当前这一层循环。break outer 让两层循环一起结束。
Python 差异: Python 不支持带标签的
break。要跳出多层循环,可以把嵌套循环放进一个函数并用return,或者用for...else+break的技巧。Java/C++ 的标签机制在这点上更直接。
C++ 差异: 标签语法和 Java 完全一致。同样的
break outer写法。
旅人笔记
break → 整个循环结束,拔腿走人。continue → 这次不干了,下次继续。标签 → 嵌套循环里想跳多远跳多远。
这三个工具让你的循环有了"智能"——找到了就停,不合适就跳过,嵌套太深也能一步撤离。