Java 中的 break 和 continue
把 i 从 1 循环到 5。当 i 等于 3 时,在打印之前用 break 离开循环。屏幕应只显示两行:1,然后 2。这种提前停止是本页的一个工具。另一个工具是 continue:它跳过一轮并继续循环,这样 3 不会打印,但 4 和 5 仍会打印。
break 会提前结束循环
创建一个名为 Skip.java 的小程序文件。第一行的 public class 必须与文件名一致:public class Skip。不要在这个文件里留下旧的 Pulse 或 Beat 类名;编译器要求类名与文件名一致。
在 main 里写一个可以提前停下的 for:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
break;
}
System.out.println(i);
}
for 头部是你已经熟悉的形状:起始、条件、步进。花括号里,一个 if 询问 i 是否等于 3。为 true 时执行 break;。break 立刻离开整个 for 循环。if 下面的 println 在那一轮不运行,并且 i 在这个循环里到不了 4 或 5。当 i 是 1 或 2 时,if 为 false,所以 println(i) 写出数字。编译前先保存文件。
在 break 处停下的程序
这是你先编译的版本。
public class Skip {
public static void main(String[] args) {
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
break;
}
System.out.println(i);
}
}
}
在放有 Skip.java 的文件夹里运行 javac Skip.java。当圆括号、花括号和分号都配对时,javac 自己不写任何一行。然后运行 java Skip —— 不是 java Skip.java。第二条命令不要带 .java 后缀。这两条命令在 Windows 和 macOS 上一样;本页不要求两套不同的 shell 写法。程序应打印两行然后停下:1,然后 2。它不会等你打字。如果终端在等键盘输入,说明文件里还留着旧练习的 nextLine 调用。删掉那个调用,保留上面的 for 和 break。屏幕多出一行错误内容,并不意味着你需要重装 JDK。
按顺序走完一次带 break 的运行。i 从 1 开始。if 为 false,所以 println 写出 1。步进存入 2。if 再次为 false,所以 println 写出 2。步进存入 3。此时 i == 3 为真,于是执行 break,for 结束。对 3、4、5 什么也不打印。没有 break 的普通循环会打印五行;break 在两次打印后截短了循环。那一轮在 break 之后步进不再运行,条件也不再询问,因为循环已经结束。
continue 跳过一轮
改写循环体,用 continue 替换 break,并让 println 留在 if 之后:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
continue;
}
System.out.println(i);
}
当 i 等于 3 时,continue; 跳过那一轮的其余部分——包括 println——然后 for 进入步进和下一次条件。循环本身并不结束。屏幕应显示四行:1、2、4 和 5。空缺就是本来可能出现 3 的地方。
public class Skip {
public static void main(String[] args) {
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
continue;
}
System.out.println(i);
}
}
}
再次编译并运行:javac Skip.java,然后 java Skip。你应看到四行。你没有改 for 头部——只是把 break 换成了 continue。看到四行之后,可以把 break 放回去,回到第一个演示。两个版本都是合法的 Java。它们在同一种循环形状里教两种不同的提前动作。
再读一遍带 continue 的运行。i 走 1、2、3、4、5。对 1 和 2,if 为 false,数字打印出来。对 3,continue 跳过 println。对 4 和 5,数字再次打印。当 i 变成 6 时,循环仍以正常停止结束。continue 从不结束 for;它只跳过一轮的其余部分。continue 之后,for 仍会执行步进 i = i + 1,所以即使那一轮没有打印,计数器也会继续前进。
📊 工具与屏幕
| i == 3 时的工具 | 屏幕 |
|---|---|
| break | 1 然后 2 |
| continue | 1 然后 2 然后 4 然后 5 |
把表格当作运行之后的核对,而不是代替运行。break 留下两行。continue 留下缺 3 的四行。如果本意是 continue 却仍出现 3,多半是 println 在 if 上方——把 println 移到 continue 下面,这样跳过才能到达它。修正顺序,不要重装 Java。
让两个工具保持清楚的规则
break 和 continue 属于循环体内部。在 main 里单独写 break; 却没有包围的 for 或 while,javac 不会接受。continue; 也一样。在本页,一个 if 选择时机:当 i 等于 3。以后你可以写别的条件;演示保持 i == 3,好让屏幕变化容易看见。
break 不是 continue。break 结束循环。continue 跳过一轮并留在循环里。这里的这两个工具,并不等同于 switch 那一页里你见过的那种 break——这里的包围结构是 for。不要在同一个 main 里留下只负责计数的 Pulse 页 while,或没有 if 的 Beat 页 for,然后奇怪为什么 1 到 5 的每个数仍在打印。本课的 main 应保留 for,加上带 break 或 continue 的 if。
常见混淆是打印这个词本身:System.out.println("break");。那一行写出字符 break。它并不停止循环。另一种混淆是把 println(i); 放在持有 continue 的 if 上面,于是 3 仍会打印,然后 continue 执行时已经没有可跳过的内容。两个演示都把 println 放在 if 之后。若在没有包围循环的情况下写 continue,javac 会报错;任何循环外的单独 break 也一样。在本课的形状里,这两个词只在循环体内部有意义。
你现在能做什么
你可以在循环里放 break 以便提前离开,或放 continue 以便跳过一轮并继续。一个 if 可以选择何时发生。下一页是 for-each:那里循环遍历集合中的每个值,而不必像以前那样用手写出起始、条件和步进。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部