Java Academy · 课时

带标签的 continue

继续执行外层循环

第 3 / 4 课13 个步骤

带标签的 continue 是 CoddyKit 上的免费 Java Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

继续外层循环

普通的继续只会重新开始内层循环。有时您希望跳到外层循环的下一轮。

为此,Java 提供了带标签的继续。

它将循环标签与继续关键字结合起来,用于控制哪个循环前进。

带标签的继续语法

形式为 继续 标签;,其中标签命名一个外层循环。

它不会让内层循环继续前进,而是跳到带标签循环的下一次迭代。

该轮内层循环中剩余的所有内容都会被跳过。

continue outer;  // jump to next iteration of 'outer'

第一个示例

这里,当列等于 2 时,我们继续外层循环。

这会放弃内层循环的剩余部分,并立即移动到下一行。

public class Main {
    public static void main(String[] args) {
        outer:
        for (int row = 1; row <= 3; row++) {
            for (int col = 1; col <= 3; col++) {
                if (col == 2) {
                    continue outer;
                }
                System.out.println("row " + row + ", col " + col);
            }
        }
    }
}

阅读输出

每一行只打印了第 1 列。当列达到 2 时,继续 外层会直接跳到下一行。

对于任何一行,第 2 列和第 3 列都不会被打印。

每开始新的一行,内层循环都会从第 1 列重新开始。

继续与带标签的继续

请与普通继续进行比较。普通继续只会跳过第 2 列,仍然会打印第 3 列。

运行这段代码,注意每一行都会出现第 1 列和第 3 列。

public class Main {
    public static void main(String[] args) {
        for (int row = 1; row <= 3; row++) {
            for (int col = 1; col <= 3; col++) {
                if (col == 2) {
                    continue;
                }
                System.out.println("row " + row + ", col " + col);
            }
        }
    }
}

关键区别

普通的继续只会跳过当前的内层轮次,因此内层循环仍会继续执行。

带标签的继续 外层会放弃整个内层循环,并重新开始外层循环的下一轮。

一个标签就能改变被跳过的代码范围。

跳过整行

当某个错误值应使内层一轮的剩余处理全部失效时,带标签的继续非常有用。

这里,如果一行中的任何数字为负数,我们就跳过该行剩余的处理并继续下一行。

public class Main {
    public static void main(String[] args) {
        int[][] data = {{1, 2, 3}, {4, -1, 6}, {7, 8, 9}};
        rows:
        for (int r = 0; r < data.length; r++) {
            int sum = 0;
            for (int c = 0; c < data[r].length; c++) {
                if (data[r][c] < 0) {
                    System.out.println("Row " + r + " skipped");
                    continue rows;
                }
                sum += data[r][c];
            }
            System.out.println("Row " + r + " sum = " + sum);
        }
    }
}

追踪该示例

第 0 行和第 2 行打印了它们的总和。第 1 行遇到负值,打印“已跳过第 1 行”,然后跳到下一行。

需要特别注意的是,第 1 行的总和行从未执行,因为带标签的继续跳过了它。

筛选组合

另一个用途是:当某个内层条件失败时,立即跳过整个外层项目。

这个循环会打印组合,但如果 i 与 j 的乘积会超过 6,就跳过该 i。

public class Main {
    public static void main(String[] args) {
        loopI:
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= 3; j++) {
                if (i * j > 6) {
                    continue loopI;
                }
                System.out.println(i + " x " + j + " = " + (i * j));
            }
        }
    }
}

标签名称与位置

带标签的循环必须包围继续语句。您不能继续一个位于自身上方之外的标签。

请选择行或loopI这样的描述性名称,让读者知道哪个循环会前进。

清晰的标签本身就是一种说明。

何时有用,何时有害

当某个条件应使内层一轮的剩余部分失效并继续处理后续内容时,带标签的继续很有帮助。

但过度使用标签会使流程难以追踪。如果普通继续或提前从方法返回读起来更简单,请优先使用它们。

只在确实能让逻辑更清晰的地方使用标签。

快速检查

预测带标签的继续会产生什么效果。

回顾

继续 标签;会跳过内层循环的剩余部分,并让命名的外层循环进入下一次迭代。

它不同于普通继续,后者只会跳过一次内层轮次。请在标签能让多循环逻辑更清晰,而不仅仅是让代码更短时使用标签。

免费开始

用 AI 导师学习 Java — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
104
课程
374

常见问题解答

「带标签的 continue」课时是免费的吗?

是的 — 「带标签的 continue」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「带标签的 continue」这节课中我会学到什么?

继续执行外层循环 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「带标签的 continue」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. break 与 continue
  2. 带标签的 break
  3. 带标签的 continue
  4. 避免意大利面式流程
← 返回 Java Academy