1. 引言
通常会遇到这样的情况:你并不需要把循环完整执行到末尾,而是希望提前退出——比如一旦找到了目标元素就立即结束。还有些时候,你只想跳过当前这一步工作并进入下一步(例如你已经读取了数据,想跳过其后续处理)。 这就是在循环内部进行的流程控制。
Java 中的 break 和 continue 语句正是为此而设计的。接下来我们来看看它们如何工作,以及在真实任务中能发挥什么作用。
2. break 语句:“停下!”
理论与语法
break 语句用于立即跳出所在的循环,无论它位于循环体的什么位置。一旦程序执行到 break,循环会立刻结束,随后从循环之后的第一行代码继续执行。
while (condition)
{
if (kakoe-to_condition)
{
break;
}
// 其余的循环代码
}
在
while 循环中使用
break
对于 for 和 do-while 也同理:
for (int i = 0; i < 10; i++)
{
if (kakoe-to_condition)
{
break;
}
// 其余的循环代码
}
示例 1:判断素数
一个数如果只被 1 和它本身整除,则它是素数。我们要判断一个数是否为素数:遍历所有潜在的除数,从 2 到 n-1。如果发现该数能被某个除数整除,就不必再继续检查——它不是素数,可以结束循环。
示例:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("找到一个因子 " + i );
break; // 停止循环,不必再继续查找!
}
}
if (!found)
{
System.out.println("未找到因子 - 该数是素数。");
}
示例 2:用户输入校验
我们来写一个小程序,比如用于收集数据的交互式问卷:
while (true)
{
System.out.print("请输入您的年龄:");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("太棒了!您的年龄:" + age);
break; // 数据有效,退出
}
else
{
System.out.println("错误!请输入正的年龄。");
}
}
else
{
System.out.println("错误!请输入数字。");
console.nextLine(); // 丢弃不合法的输入
}
}
为什么需要这样做:
有时需要让循环无限(或很长时间)执行,直到用户输入了正确的数据。一旦发生了符合预期的事件——就使用 break 彻底退出循环。
3. continue 语句:“下一位,请!”
理论与语法
与 break 不同,continue 并不会结束整个循环,而只是中断当前迭代:循环体中写在 continue 之后的代码将不会执行——程序会直接进入下一次迭代。
for (int i = 0; i < 10; i++)
{
if (condition)
{
continue;
}
// 只有在未触发 continue 时,这部分才会执行
}
在
for 循环中使用
continue
示例 3:跳过偶数
设想你只需要输出某个区间内的奇数。偶数需要被跳过。
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 如果是偶数 - 跳过下面的所有内容!
}
System.out.println("奇数:" + i);
}
使用
continue 跳过偶数
发生了什么:
当 i = 2, 4, 6... 时,循环遇到 continue 会立即跳到下一次迭代,不再执行 System.out.println。
分步演示:
| i | i % 2 == 0 | 操作 |
|---|---|---|
| 1 | false | 打印,未触发 continue |
| 2 | true | continue,未执行打印 |
| 3 | false | 打印,未触发 continue |
| ... | ... | ... |
break 和 continue 非常常用,几乎每两个循环就能见到一个。你会喜欢与它们打交道的。
GO TO FULL VERSION