最常用和最直接的方法是使用 continue 关键字。

下面我将详细解释 continue 的用法,并介绍其他相关概念(如 break 和 return)以帮助你彻底理解它们之间的区别。
使用 continue 关键字(最常用)
continue 语句用于立即终止当前的循环迭代,并跳转到循环的条件判断部分(对于 while 和 do-while 循环)或迭代器更新部分(对于 for 循环),然后开始下一次迭代。
示例1:在 for 循环中使用 continue
这个例子会打印 1 到 10 之间的所有数字,但跳过能被 3 整除的数字。
public class ContinueExample {
public static void main(String[] args) {
System.out.println("使用 continue 跳过本次循环:");
for (int i = 1; i <= 10; i++) {
// i 能被 3 整除,就跳过本次循环的剩余代码
if (i % 3 == 0) {
System.out.println("跳过数字: " + i);
continue; // 跳转到 for 循环的 i++ 部分
}
// 只有当 if 条件不满足时,这行代码才会被执行
System.out.println("当前数字是: " + i);
}
}
}
输出结果:

使用 continue 跳过本次循环:
当前数字是: 1
当前数字是: 2
跳过数字: 3
当前数字是: 4
当前数字是: 5
跳过数字: 6
当前数字是: 7
当前数字是: 8
跳过数字: 9
当前数字是: 10
分析:
当 i 的值是 3, 6, 9 时,if (i % 3 == 0) 条件为真,continue 语句被执行,程序立即跳过 System.out.println("当前数字是: " + i); 这一行,直接执行 i++,然后进入下一次循环。
示例2:在 while 循环中使用 continue
在 while 循环中,continue 会跳转到循环的 while 条件判断部分。
public class ContinueWhileExample {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
i++; // 必须小心,避免无限循环
if (i == 3) {
System.out.println("跳过数字: " + i);
continue; // 跳转到 while (i < 5) 的判断
}
System.out.println("当前数字是: " + i);
}
}
}
输出结果:
当前数字是: 1
当前数字是: 2
跳过数字: 3
当前数字是: 4
当前数字是: 5
continue 与标签(Labeled continue)—— 跳出多层嵌套循环
如果你在一个嵌套循环中(比如一个循环在另一个循环内部),普通的 continue 只会跳出它所在的最内层循环,如果你想跳出外层的某个特定循环,可以使用带标签的 continue。
语法:
labelName: 放在循环语句的前面,continue labelName; 指定要跳转到哪个循环的下一次迭代。
示例:跳出外层循环
public class LabeledContinueExample {
public static void main(String[] args) {
outerLoop: // 为外层循环定义一个标签 "outerLoop"
for (int i = 1; i <= 3; i++) {
System.out.println("外层循环 i = " + i);
for (int j = 1; j <= 3; j++) {
System.out.println(" 内层循环 j = " + j);
if (j == 2) {
System.out.println(" j == 2,跳出外层循环的下一次迭代");
continue outerLoop; // 跳转到 outerLoop 循环的下一次迭代 (i++)
}
}
System.out.println(" 这行代码在普通 continue 时会执行,但在 labeled continue 不会执行");
}
System.out.println("程序结束");
}
}
输出结果:
外层循环 i = 1
内层循环 j = 1
j == 2,跳出外层循环的下一次迭代
外层循环 i = 2
内层循环 j = 1
j == 2,跳出外层循环的下一次迭代
外层循环 i = 3
内层循环 j = 1
j == 2,跳出外层循环的下一次迭代
程序结束
分析:
当 j 等于 2 时,continue outerLoop; 不是跳出内层循环,而是直接跳转到外层 for 循环的 i++ 部分,然后开始外层循环的下一次迭代,内层循环中 j 为 2 和 3 的代码以及外层循环中 continue 之后的代码都不会被执行。
continue 与 break 的区别(非常重要)
初学者经常混淆 continue 和 break,下面是它们的核心区别:
| 特性 | continue |
break |
|---|---|---|
| 作用 | 跳出本次循环,继续下一次循环。 | 跳出整个循环,循环终止。 |
| 影响范围 | 只影响它所在的一层循环(除非使用标签)。 | 只影响它所在的一层循环(除非使用标签)。 |
| 类比 | “跳过这个,做下一个。” | “不做了,到此为止。” |
break 示例
public class BreakExample {
public static void main(String[] args) {
System.out.println("使用 break 跳出整个循环:");
for (int i = 1; i <= 10; i++) {
if (i == 5) {
System.out.println("i 等于 5,循环终止。");
break; // 整个 for 循环结束
}
System.out.println("当前数字是: " + i);
}
System.out.println("程序结束");
}
}
输出结果:
使用 break 跳出整个循环:
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
i 等于 5,循环终止。
程序结束
可以看到,当 i 为 5 时,break 执行后,循环完全停止,i 不会再增加到 6。
return 语句(跳出方法)
return 也可以用来“跳出循环”,但它有一个更彻底的效果:它会立即终止当前方法的执行,并返回一个值(如果方法有返回类型)。
public class ReturnExample {
public static void printNumbers() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
System.out.println("i 等于 5,方法执行结束。");
return; // 不仅跳出循环,也跳出了 printNumbers 整个方法
}
System.out.println("当前数字是: " + i);
}
System.out.println("这行代码不会被执行,因为方法已经返回了。");
}
public static void main(String[] args) {
printNumbers();
System.out.println("main 方法继续执行。");
}
}
输出结果:
当前数字是: 1
当前数字是: 2
当前数字是: 3
当前数字是: 4
i 等于 5,方法执行结束。
main 方法继续执行。
| 关键字 | 作用 | 使用场景 |
|---|---|---|
continue |
跳出本次循环,执行下一次循环。 | 当你满足某个条件时,想跳过当前迭代剩余的代码,过滤掉无效数据。 |
break |
跳出整个循环,循环终止。 | 当你找到目标或遇到错误时,想立即停止整个循环,找到列表中的某个特定元素后不再查找。 |
return |
跳出整个方法。 | 当方法完成了它的核心任务或遇到无法继续执行的条件时。 |
- 想要跳过本次,用
continue。 - 想要终止循环,用
break。 - 想要终止方法,用
return。
对于“跳出本次循环”这个需求,continue 是最准确、最常用的选择。
