Java流程控制——7.break和continue
Java中的break与continue
在循环结构中,有时需要根据特定条件改变循环的执行流程——提前退出循环或跳过当前循环的剩余部分。Java提供的break和continue语句正是实现这种精细控制的工具,它们能让循环结构更加灵活和高效。
break语句:跳出循环
break语句的作用是立即终止当前所在的循环,并跳出该循环体,继续执行循环之后的代码。它通常与if条件判断配合使用,在满足特定条件时提前结束循环。
基本用法示例
public class BreakExample {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (true) { // 无限循环
sum += i;
if (i == 100) {
break; // 当i等于100时跳出循环
}
i++;
}
System.out.println("1到100的和为:" + sum); // 输出5050
}
}
在这个例子中,while(true)创建了一个理论上的无限循环,但通过break语句,我们在i达到100时成功终止了循环,避免了真正的无限循环。
嵌套循环中的break
在嵌套循环中,break语句只跳出它所在的那一层循环,不会影响外层循环:
public class NestedBreakExample {
public static void main(String[] args) {
// 外层循环
for (int i = 1; i <= 3; i++) {
System.out.println("外层循环 i = " + i);
// 内层循环
for (int j = 1; j <= 5; j++) {
System.out.println(" 内层循环 j = " + j);
if (j == i) {
break; // 只跳出内层循环
}
}
System.out.println("内层循环结束");
}
System.out.println("外层循环结束");
}
}
输出结果:
外层循环 i = 1
内层循环 j = 1
内层循环结束
外层循环 i = 2
内层循环 j = 1
内层循环 j = 2
内层循环结束
外层循环 i = 3
内层循环 j = 1
内层循环 j = 2
内层循环 j = 3
内层循环结束
外层循环结束
可以看到,break语句只终止了内层循环,外层循环仍然继续执行。
continue语句:跳过本次循环
continue语句的作用是提前结束当前次循环,直接进入下一次循环的判断条件。它不会终止整个循环,只是跳过当前循环中剩余的代码。
基本用法示例
public class ContinueExample {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 6; i++) {
System.out.println("开始处理 i = " + i);
if (i % 2 == 0) { // 如果i是偶数
continue; // 跳过本次循环的剩余部分
}
sum += i; // 只累加奇数
System.out.println("结束处理 i = " + i);
}
System.out.println("1到6的奇数和为:" + sum); // 输出25
}
}
输出结果:
开始处理 i = 1
结束处理 i = 1
开始处理 i = 2
开始处理 i = 3
结束处理 i = 3
开始处理 i = 4
开始处理 i = 5
结束处理 i = 5
开始处理 i = 6
1到6的奇数和为:9
当i为偶数时,continue语句跳过了后续的累加操作和"结束处理"打印,直接进入下一次循环。
嵌套循环中的continue
与break类似,continue在嵌套循环中也只作用于它所在的那一层循环:
public class NestedContinueExample {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
continue; // 跳过内层循环的j=2的本次循环
}
System.out.println("i=" + i + ", j=" + j);
}
}
}
}
输出结果:
i=1, j=1
i=1, j=3
i=2, j=1
i=2, j=3
i=3, j=1
i=3, j=3
可以看到,continue语句只跳过了内层循环中j=2的那次循环,对其他循环没有影响。
break与continue的对比
| 语句 | 作用 | 适用场景 |
|---|---|---|
| break | 终止当前循环,跳出循环体 | 满足条件时完全结束循环 |
| continue | 跳过当前循环的剩余部分,进入下一次循环 | 满足条件时跳过本次循环的部分操作 |
关键区别示例
public class BreakVsContinue {
public static void main(String[] args) {
System.out.println("使用break:");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
System.out.println(i);
}
System.out.println("\n使用continue:");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
}
}
输出结果:
使用break:
1
2
使用continue:
1
2
4
5
这个对比清晰展示了两者的区别:break在i=3时完全终止了循环,而continue只是跳过了i=3的输出,循环继续执行。
场景案例
场景1:查找元素
使用break在找到目标元素后立即终止循环,提高效率:
public class FindElement {
public static void main(String[] args) {
int[] numbers = {5, 12, 8, 3, 17, 9};
int target = 8;
int index = -1;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == target) {
index = i;
break; // 找到后立即退出循环
}
}
if (index != -1) {
System.out.println("找到元素 " + target + ",索引为:" + index);
} else {
System.out.println("未找到元素 " + target);
}
}
}
场景2:过滤数据
使用continue跳过不需要处理的数据:
public class FilterData {
public static void main(String[] args) {
String[] names = {"Alice", "Bob", "Charlie", "David", "Eve"};
// 只处理长度大于3的名字
for (String name : names) {
if (name.length() <= 3) {
continue; // 跳过短名字
}
System.out.println("处理名字:" + name);
// 此处可以添加复杂的处理逻辑
}
}
}
注意事项
配合清晰的条件判断:
break和continue通常与if语句配合使用,条件判断应清晰明确,避免模糊的逻辑。注意循环嵌套层次:在多层嵌套循环中,
break和continue只作用于当前层,如需跳出多层循环,可使用标记(label):
// 使用标记跳出多层循环
public class LabeledBreak {
public static void main(String[] args) {
outerLoop: // 外层循环标记
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i * j > 5) {
System.out.println("跳出外层循环");
break outerLoop; // 跳出标记的外层循环
}
System.out.println("i=" + i + ", j=" + j);
}
}
}
}
总结
break:终止当前循环,完全跳出循环体continue:跳过当前循环的剩余部分,直接进入下一次循环
Java流程控制——7.break和continue的更多相关文章
- Java流程控制之break、continue、goto
break.continue break在任何循环语句的主体部分,均可用break控制循环的流程.break用于强行退出循环,不执行循环中剩余的语句.(break语句也在switch语句中使用) co ...
- Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue【3】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...
- python基础--程序交互、格式化输出、流程控制、break、continue
在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1) 程序交互 #!/usr/bin/env python # -*- coding: ...
- 大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。
下面是傻瓜博主"曾经"犯过的错和一些心得: ༼ つ ◕_◕ ༽つ 1.要想流程控制学好,一定要学会化繁为简,举栗子: 三目运算符 (略?略:略)---就是一个数字嘛, ...
- 四、流程控制和break、continue、range函数的讲解
目录 一.流程控制理论和必备基础知识 理论: 必备基础知识: break.continue的用法: 二.流程控制之分支结构 if if...else if...elif...else if的嵌套使用 ...
- 四、流程控制、break、continue、return
一. 程序流程控制概述 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 流程控制方式采用结构化程序设计中规定的只有三种基本流程结构,即:1.顺序结构程序 ...
- Java流程控制06——break continue
- Java流程控制,for,switch,while.break,continue,return
Java流程控制,for,switch,while.break,continue,return
- 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句
050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...
- 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句
049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...
随机推荐
- Java 压缩成zip文件
综述 在< 把多个文件打包压缩成tar.gz文件并解压的Java实现>中介绍了如何把文件压缩车gz文件,这里介绍如何把文件压缩成zip文件.支持如下方式的压缩: 压缩单个文件 压缩文件夹下 ...
- 20244104陈思淼 《Python程序设计》实验三报告
课程:<Python程序设计> 班级:2441 姓名:陈思淼 学号:20244104 实验教师:王志强 实验日期:20254月20日 必修/选修: 公选课 1.实验内容 创建服务端和客户端 ...
- 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第三周作业
[中文][吴恩达课后编程作业]Course 4 - 卷积神经网络 - 第三周作业 - 车辆识别 上一篇:[课程4 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:[课程4 - 第四周测验] ...
- UI跳转WE DYNPRO带参数
同事今天在做一个需求,需要把UI上的业务角色,传递给挂在UI上的DYNPRO程序.然后我们就研究了一下,发现挺好玩的. 1,设置URL参数 2.定义URL的参数 3.找到链接对应的类,把参数传上 4. ...
- Apache Hudi 在袋鼠云数据湖平台的设计与实践
在大数据处理中,实时数据分析是一个重要的需求.随着数据量的不断增长,对于实时分析的挑战也在不断加大,传统的批处理方式已经不能满足实时数据处理的需求,需要一种更加高效的技术来解决这个问题.Apache ...
- 替换GitLab的方案之Gitea
概述 官网:https://docs.gitea.com/zh-cn/ GitHub地址:https://github.com/go-gitea/gitea Gitea 是一个轻量级的 DevOps ...
- 适用于编程小白的Python学习01:Pandas初探
什么是Python虚拟环境? Python虚拟环境是一个独立的.隔离的Python运行环境,它允许你为每个项目安装独立的库和依赖项,而不会与系统中其他Python项目或全局Python环境发生冲突,从 ...
- Wondows11安装 Docker Desktop 教程
环境准备 确保电脑BIOS里面开启了虚拟化,可以任务管理器里面查看 启用wondows虚拟化支持 控制面板-程序-启用或关闭wondows功能 这里如果是家庭版,可能没有Hyper-v,没有就不勾 或 ...
- 初见threejs
threejs底层封装了强大的webGL技术,让开发者们可以开箱即用 (其实也并非开箱即用,还是挺麻烦的). 恰巧朋友遇到了些难题,借此契机,接触了下threejs. 官网是支持中文的,虽然翻译的很差 ...
- taro从0开发一个组件插件包
前言 经常看到taro物料市场 上有很多好用的组件,因此我也想造轮子. 网上有很多现成的方案,可是我觉得不好,他们都是在一个完整的项目中开发依赖的,实际上我们可能不需要这么多无用的依赖和代码. 所以我 ...