带标签的 continue
继续执行外层循环
带标签的 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 反馈 — 无需本地设置。
此课程中的所有课时
- break 与 continue
- 带标签的 break
- 带标签的 continue
- 避免意大利面式流程