Java的break和continue语句
来自CloudWiki
循环结构有两个辅助循环控制的保留字:break和continue。
break用于跳出最内层for或while循环,跳出该循环后,从循环后的代码继续执行。
continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。
- 为什么会有这两个语句呢 ?设计这两个语句的初衷是什么 ?
在大型计算中,循环一般很占时间,设立break语句和continue语句的作用是为了在达到目的后能提前结束循环,从而避免计算资源的浪费。
break语句
中止for循环
public class BreakTest { public static void main(String args[]) { int i ; for(i = 1; i <= 10; i++) { if(i%3 == 0) { System.out.println("i = " + i); // 执行该语句时将结束循环 break ; } } System.out.println("循环中断:i = " + i); } }
- 运行上面程序,看到如下运行结果:
i = 1 i = 2
- 循环中断:i = 3
- 从上面运行结果来看,将看到i循环到3时即结束,当i等于3时,循环体内遇到break语句,程序跳出该循环。
中止while循环
package task4; import java.util.Scanner; public class Break { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String s=""; while(true) { System.out.println("请输入姓名:"); s= sc.next(); System.out.println("输入的姓名为:"+s); if(s.equals("q")) { break; } } System.out.println("程序结束"); } }
- 如果有两层或多层循环,break退出最内层循环。
退出多层循环
- break语句不仅可以结束其所在的循环,还可以直接结束外层循环。此时需要在break后面紧跟一个标签,这个标签用于标识外层循环。
- Java中的标签就是一个紧跟着英文冒号(:)的标识符。
- 例如:输出100到999之间的第一个水仙花数后结束循环。
public class BreakTestTwo { public static void main(String[] args) { // 外层循环,outer作为标识符 outer: for(int a = 1; a <= 9; a++) { // 嵌套的中间层,middle作为标识符 middle: for(int b = 0; b <= 9; b++) { // 最内层的循环 for(int c = 0; c <= 9; c++) { if(a * a * a + b * b * b + c * c * c == 100 * a + 10 * b + c) { System.out.println("水仙花数:" + (100 * a + 10 * b + c)); // 跳出outer标签所标识的循环 break outer; } } } } } }
continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。
continue语句
- continue的功能和break有点类似,区别是continue只是忽略本次循环剩下语句,接着开始下一次循环,并不会终止循环;而break则是完全终止循环本身。
提前中止for循环
- 以for循环为例(如图2-18所示),在循环主体中有continue语句时,当程序执行到continue,即忽略本次循环剩余的语句,继续执行下一次循环。
package stu; public class Main { public static void main(String[] args) { int i ; for(i = 1; i <= 10; i++) { if(i%3 == 0) { // 执行该语句时将结束循环 continue ; } System.out.println("i = " + i); } } }
- 运行上面程序,看到如下运行结果:
i = 1 continue后的输出语句 i = 2 continue后的输出语句 i = 3 i = 4 continue后的输出语句 i = 5 continue后的输出语句
- 从上面运行结果来看,当i等于3时,程序没有输出“continue后的输出语句”字符串,因为程序执行到continue时,忽略了当次循环中continue语句后的代码。
提前中止while循环
- 示例:本地车免检
package task4; import java.util.Scanner; public class Break { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String s=""; while(true) { System.out.println("请输入车牌号:"); s= sc.next(); if(s.equals("q")) { break;//跳出循环 } if(s.substring(0,2).equals("鲁A")) { System.out.println("本地车免检,下一位。"); continue;//提前结束本次循环,进入下一轮循环 } System.out.println("正常车辆,请缴费~"); } System.out.println("程序结束"); } }
总结
continue语句和break语句的区别是:continue语句只结束本次循环,不终止整个循环的执行,
而break具备结束循环的能力。