某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环。此时,可以使用 break 来完成这个功能。

break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统将完全结束该循环,开始执行循环之后的代码。

在 Java 中,break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列、使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能。

Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

使用 break 语句直接强行退出循环(break 不带标签)

可以使用 break 语句强行退出循环,忽略循环体中的任何其他语句和循环的条件判断。在循环中遇到 break 语句时,循环被终止,在循环后面的语句重新开始。

例 1

小明参加了一个 1000 米的长跑比赛,在 100 米的跑道上,他循环地跑着,每跑一圈,剩余路程就会减少 100 米,要跑的圈数就是循环的次数。但是,在每跑完一圈时,教练会问他是否要坚持下去,如果回答 y,则继续跑,否则表示放弃。

使用 break 语句直接强行退出循环的示例如下:

public static void main(String[] args) {Scanner input = new Scanner(System.in); // 定义变量存储小明的回答String answer = ""; // 一圈100米,1000米为10圈,即为循环的次数for (int i = 0; i < 10; i++) {System.out.println("跑的是第" + (i + 1) + "圈");System.out.println("还能坚持吗?"); // 获取小明的回答answer = input.next(); // 判断小明的回答是否为y?如果不是,则放弃,跳出循环if (!answer.equals("y")) {System.out.println("放弃");break;}// 循环之后的代码System.out.println("加油!继续!");}
}

该程序运行后的效果如下所示:

跑的是第1圈
还能坚持吗?
y
加油!继续!
跑的是第2圈
还能坚持吗?
y
加油!继续!
跑的是第3圈
还能坚持吗?
n
放弃

尽管 for 循环被设计为从 0 执行到 10,但是当小明的回答不是 y 时,break 语句终止了程序的循环,继续执行循环体外的代码,输出“加油!继续!”。

break 语句能用于任何 Java 循环中,包括人们有意设置的无限循环。在一系列嵌套循环中使用 break 语句时,它将仅仅终止最里面的循环。例如:

public static void main(String[] args) {// 外循环,循环5次for (int i = 0; i < 5; i++) {System.out.print("第" + (i + 1) + "次循环:");// 内循环,设计为循环10次for (int j = 0; j < 10; j++) {// 判断j是否等于3,如果是,则终止循环if (j == 3) {break;}System.out.print("内循环的第" + (j + 1) + "次循环\t");}System.out.println();}
}

该程序运行结果如下所示:

第1次循环:内循环的第1次循环 内循环的第2次循环 内循环的第3次循环
第2次循环:内循环的第1次循环 内循环的第2次循环 内循环的第3次循环
第3次循环:内循环的第1次循环 内循环的第2次循环 内循环的第3次循环
第4次循环:内循环的第1次循环 内循环的第2次循环 内循环的第3次循环
第5次循环:内循环的第1次循环 内循环的第2次循环 内循环的第3次循环

从程序运行结果来看,在内部循环中的 break 语句仅仅终止了所在的内部循环,外部循环没有受到任何的影响。

注意:一个循环中可以有一个以上的 break 语句,但是过多的 break 语句会破坏代码结构。switch 循环语句中的 break 仅影响 switch 语句,不会影响循环。

例 2

编写一个 Java 程序,允许用户输入 6 门课程成绩,如果录入的成绩为负则跳出循环;如果录入 6 门合法成绩,则计算已有成绩之和。

使用 break 语句的实现代码如下:

public static void main(String[] args) {int score; // 每门课的成绩int sum = 0; // 成绩之和boolean con = true; // 记录录入的成绩是否合法Scanner input = new Scanner(System.in);System.out.println("请输入学生的姓名:");String name = input.next(); // 获取用户输入的姓名for (int i = 1; i <= 6; i++) {System.out.println("请输入第" + i + "门课程的成绩:");score = input.nextInt();// 获取用户输入的成绩if (score < 0) { // 判断用户输入的成绩是否为负数,如果为负数,终止循环con = false;break;}sum = sum + score; // 累加求和}if (con) {System.out.println(name + "的总成绩为:" + sum);} else {System.out.println("抱歉,分数录入错误,请重新录入!");}
}

运行程序,当用户录入的分数低于 0 时,则输出“抱歉,分数录入错误,请重新录入!”信息,否则打印学生的总成绩。输出结果如下所示。

请输入学生的姓名:
zhangpu
请输入第1门课程的成绩:
100
请输入第2门课程的成绩:
75
请输入第3门课程的成绩:
-8
抱歉,分数录入错误,请重新录入!
请输入学生的姓名:
zhangpu
请输入第1门课程的成绩:
100
请输入第2门课程的成绩:
68
请输入第3门课程的成绩:
73
请输入第4门课程的成绩:
47
请输入第5门课程的成绩:
99
请输入第6门课程的成绩:
84
zhangpu的总成绩为:471

在该程序中,当录入第 3 门课的成绩时,录入的成绩为负数,判断条件“score<0”为 true,执行“con=false”,用 con 来标记录入是否有误。接着执行 break 语句,执行完之后程序并没有继续执行条件语句后面的语句,而是直接退出 for 循环。之后执行下面的条件判断语句,判断 boolean 变量的 con 是否为 true,如果为 true,则打印总成绩;否则打印“抱歉,分数录入错误,请重新录入!”。

使用 break 语句实现 goto 的功能(break 带标签)

有时候,在嵌套很深的循环语句中会发生一些不可预料的事情。此时可能更加希望跳到嵌套的所有循环语句之外。通过添加一些额外的条件判断实现各层循环的检测很不方便。

幸运的是,Java 与 C++ 不同,Java 提供了一种带标签的 break 语句,用于跳出多重嵌套的循环语句。

break 语句可以实现 goto 的功能,并且 Java 定义了 break 语句的一种扩展形式来处理退出嵌套很深的循环这个问题。

通过使用扩展的 break 语句,可以终止执行一个或者几个任意代码块,这些代码块不必是一个循环或一个 switch 语句的一部分。同时这种扩展的 break 语句带有标签,可以明确指定从何处重新开始执行。

break 除了具有 goto 退出深层循环嵌套作用外,还保留了一些程序结构化的特性。

标签 break 语句的通用格式如下:

break label;

label 是标识代码块的标签。当执行这种形式的 break 语句时,控制权被传递出指定的代码块。被加标签的代码块必须包围 break 语句,但是它不需要直接包围 break 的块。也就是说,可以使用一个加标签的 break 语句来退出一系列的嵌套块,但是不能使用 break 语句将控制权传递到不包含 break 语句的代码块。

用标签(label)可以指定一个代码块,标签可以是任何合法有效的 Java 标识符,后跟一个冒号。加上标签的代码块可以作为 break 语句的对象,使程序在加标签的块的结尾继续执行。

下面是使用带标签的break 语句的示例。

public class GotoDemo {public static void main(String[] args) {label: for (int i = 0; i < 10; i++) {for (int j = 0; j < 8; j++) {System.out.println(j);if (j % 2 != 0) {break label;}}}}
}

以上程序的执行结果为:

0
1

这里的 label 是标签的名称,可以为 Java 语言中任意合法的标识符。标签语句必须和循环匹配使用,使用时书写在对应的循环语句的上面,标签语句以冒号结束。如果需要中断标签语句对应的循环,可以采用 break 后面跟标签名的方式。

如在上面代码中,当 j 为 1 时,“j%2!=0”条件表达式成立,则 label 标签所代表的最外层循环终止。

注意:通常紧跟 break 之后的标签,必须在 break 所在循环的外层循环之前定义才有意义。

Java break语句:跳出循环相关推荐

  1. Java快速入门到精通— Java break语句详解

    所有流行的编程语言中都有循环语句.JAVA 中采用的循环语句与C语言中的循环语句相似,主要有 while.do-while 和 for! 那么在某些时候需要在某种条件出现时强行终止循环,而不是等到循环 ...

  2. java break语句_跟我学java编程—Java跳转语句—break语句

    有时可能不知道循环将要执行的次数,终止循环的条件可在以后确定,所以需要提供一种机制在条件满足的时候跳出循环.有时候,我们需要根据条件跳过循环中的一些语句.Java语言提供了break和continue ...

  3. phpbreak跳出几层循环_4.2.5 PHP break语句跳出循环

    Posted by 撒得一地 on 2016年2月28日 in PHP入门教程 国外稳定加速器推荐 vypr | Nord 在使用循环语句时,有时不确定循环的次数,遇到这样的情况可以使用无限循环,如: ...

  4. Java break语句,标签

    Java break statement is used to terminate the loop in between it's processing. We use break reserve ...

  5. Java教程:Java break语句:跳出循环

    Java教程某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环.此时,可以使用 break 来完成这个功能. 本篇文章由 泉州SEO www.234yp.com ...

  6. Java break语句详解

    在 Java 中,break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列.使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能. 在 swit ...

  7. pythonfor循环break_Python break语句 跳出循环

    本文主要讲下break语句用法,常用在满足某个条件,需要立刻退出当前循环时(跳出循环),break语句可以用在for循环和while循环语句中.简单的说,break语句是会立即退出循环,在其后边的循环 ...

  8. Java教程:Java continue语句详解

    Java教程有时强迫一个循环提早反复是有用的,也就是,你可能想要继续运行循环,但是要忽略这次重复剩余的循环体的语句,所以 Java 提供了 continue 语句.continue 语句是 break ...

  9. Python While循环与break语句_加工零件

    编程要求 本关的编程任务是补全line.py文件中的判断语句部分,具体要求如下: 填入当已处理零件数小于总零件数count < partcount时的while循环判断语句. 在停电时填入bre ...

最新文章

  1. python练习_Python随笔31:Python基础编程练习题27~28
  2. 部署zookeeper分布式节点
  3. .net core实践系列之短信服务-Api的SDK的实现与测试
  4. 学习笔记2-Linux2
  5. 怎样在javascript中直接设置好打印方式为横向或纵向(測試未果)
  6. oracle查询空的时间,ORACLE 查看用户密码修改时间
  7. (配置消息转换器) sso单点登入之jsonp改进版
  8. 程序员最常见的技术性误区
  9. 云服务器子系统,超详尽教程!在Windows 10内置Ubuntu子系统上搭建私有云
  10. C语言复健(数组) 珠心算测验
  11. dnf超时空漩涡副本路线流程图_dnf怎么打超时空漩涡 dnf超时空漩涡打法攻略
  12. mediawiki mysql配置_安装MediaWiki
  13. ps5下载队列错误怎么办?索尼提供解决PS5下载bug的方法
  14. 信安知识竞赛培训笔记
  15. ES7.16.2基础操作之slop查询(三)
  16. 汉字Unicode表
  17. 那些惊艳了我的第三方插件收集
  18. STM32通信:IIC (二)
  19. Android调试工具ADB
  20. 为什么文件删除了但磁盘空间没有释放?

热门文章

  1. Java实现TCP的长短链接
  2. redis多实例常见部署方法和使用
  3. 【转载】面试题:面向对象的特征和基本特征有哪些 之抽象
  4. android ios动态模糊效果,iOS实现模糊效果的几种方法
  5. 基于NetCore的RabbitMQ使用
  6. POJ3238生日相同问题C++
  7. 后缀自动机+DP BZOJ 3238 差异
  8. 【MySQL】 # 优化你的SQL语句
  9. java高内聚低耦合
  10. 二、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化——灯光指数计算(一)