“Java的break语句”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“*Java语言没有提供goto语句来控制程序的跳转,这种做法提高了程序流程控制的可读性,但降低了程序流程控制的灵活性。为了…”)
 
 
(未显示同一用户的1个中间版本)
第5行: 第5行:
 
*图2-17 for循环中使用break语句
 
*图2-17 for循环中使用break语句
 
*[[文件:java2-19.png]]
 
*[[文件:java2-19.png]]
*例如:利用for循环输出循环变量i的值,当i除以3所取的余数为0时,即使用break语句的跳离循环,并于程序结束前输出循环变量i的最终值。
+
*例如:碰到第一个被3整除的数时结束循环
 
  <nowiki>public class BreakTest {
 
  <nowiki>public class BreakTest {
 
public static void main(String args[])  
 
public static void main(String args[])  
第12行: 第12行:
 
for(i = 1; i <= 10; i++) {  
 
for(i = 1; i <= 10; i++) {  
 
    if(i%3 == 0) {
 
    if(i%3 == 0) {
    // 执行该语句时将结束循环
+
                        System.out.println("i = " + i);
 +
    // 执行该语句时将结束循环                    
 
    break ;  
 
    break ;  
 
    }
 
    }
    System.out.println("i = " + i);
+
     
 
}  
 
}  
 
System.out.println("循环中断:i = " + i);  
 
System.out.println("循环中断:i = " + i);  
第48行: 第49行:
 
}
 
}
 
}</nowiki>
 
}</nowiki>
 +
 +
*吃面程序:
 +
 +
<nowiki>import java.util.Scanner;
 +
public class test02 {
 +
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
        //String a ="hello";
 +
String [] menu = {"阳春面","油泼面","鸡汤面","火鸡面","安徽板面"};
 +
Scanner sc = new Scanner(System.in);
 +
String reply="no";
 +
for(int i=0;i <5;i++){
 +
System.out.println(menu[i]+"您是否来一份 ?Y/n");
 +
reply= sc.next();
 +
if(reply.equals("y")){
 +
System.out.println("您选择的是"+menu[i]);
 +
break;
 +
}else if(reply.equals("n")){
 +
continue;
 +
}
 +
}
 +
if(reply.equals("no")){
 +
System.out.println("不好意思,本店没有您想吃的面。来杯酸梅汤吧!");
 +
}
 +
sc.close();
 +
 +
}
 +
 +
}
 +
</nowiki>
 
*运行上面程序,看到如下运行结果:
 
*运行上面程序,看到如下运行结果:
 
  水仙花数:153
 
  水仙花数:153

2020年3月27日 (五) 08:44的最新版本

  • Java语言没有提供goto语句来控制程序的跳转,这种做法提高了程序流程控制的可读性,但降低了程序流程控制的灵活性。为了弥补这种不足,Java提供了continue和break来控制循环结构。除此之外,return可以结束整个方法,当然也就结束了一次循环。
  • 某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为false时才退出循环。此时,可以使用break来完成这个功能。break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束该循环,开始执行循环之后的代码。
  • 以for循环为例(如图2-17所示),在循环主体中有break语句时,当程序执行到break,即会离开循环主体,而继续执行循环外层的语句。
  • 图2-17 for循环中使用break语句
  • 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语句,程序跳出该循环。
  • 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;
					}
				}
			}
		}
	}
}
  • 吃面程序:
import java.util.Scanner;
public class test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        //String a ="hello";
		String [] menu = {"阳春面","油泼面","鸡汤面","火鸡面","安徽板面"};
		Scanner sc = new Scanner(System.in);
		String reply="no";
		for(int i=0;i <5;i++){
			System.out.println(menu[i]+"您是否来一份 ?Y/n");
			reply= sc.next();
			if(reply.equals("y")){
				System.out.println("您选择的是"+menu[i]);
				break;
			}else if(reply.equals("n")){
				continue;
			}
		}
		if(reply.equals("no")){
			System.out.println("不好意思,本店没有您想吃的面。来杯酸梅汤吧!");
		}
		sc.close();
		
	}

}

  • 运行上面程序,看到如下运行结果:
水仙花数:153
  • 程序从外层循环进入内层循环后,当if语句中的条件为true时,程序输出水仙花数后,遇到break outer;语句,这行代码将会导致结束outer标签指定的循环,不是结束break所在的循环,而是结束break指定标签的外层循环。所以看到上面的运行结果。
  • 值得指出的是,break后的标签必须是一个有效的标签,即这个标签必须在break语句所在的循环之前定义,或者在其所在循环的外层循环之前定义。

返回 Java程序设计