Java的break和continue语句

来自CloudWiki
跳转至: 导航搜索

循环结构有两个辅助循环控制的保留字:break和continue。

break用于跳出最内层for或while循环,跳出该循环后,从循环后的代码继续执行。

continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。

  • 为什么会有这两个语句呢 ?设计这两个语句的初衷是什么 ?

在大型计算中,循环一般很占时间,设立break语句和continue语句的作用是为了在达到目的后能提前结束循环,从而避免计算资源的浪费。

break语句

中止for循环

  • Java2-19.png
  • 例如:碰到第一个被3整除的数时结束循环
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,即忽略本次循环剩余的语句,继续执行下一次循环。
  • 图2-18 for循环中使用continue语句
  • Java2-20.png
  • 例如:遇到能被3整除的数时不打印:
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具备结束循环的能力。