跳到内容

元数据卡

  • 前置知识:while 循环、for 循环
  • 预计时间:10 分钟
  • 完成标志:能用 break 提前退出循环,用 continue 跳过当前迭代

你在矿洞里挖铁矿,一个铁镐敲下去——哐!

你面前有一条矿脉横贯洞壁,你想一直挖,直到你听到地面传来一声钟响(收工信号)。或者——你不想在这块地方挖个没完,想跳过那些空石头。

这就是循环里的两个关键操作:提前结束跳过一次


break——直接结束循环

java
// 寻找矿脉中的第一块铁矿
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——跳过当前这一次

java
// 显示 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

有时候你有一个循环套另一个循环——比如遍历每一块地,每块地里再翻每一块石头:

java
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 → 这次不干了,下次继续。标签 → 嵌套循环里想跳多远跳多远。

这三个工具让你的循环有了"智能"——找到了就停,不合适就跳过,嵌套太深也能一步撤离。

→ 下一步:控制流练习

Built with VitePress | Software Systems Atlas