“Java的break语句”的版本间的差异
来自CloudWiki
(创建页面,内容为“*Java语言没有提供goto语句来控制程序的跳转,这种做法提高了程序流程控制的可读性,但降低了程序流程控制的灵活性。为了…”) |
|||
(未显示同一用户的1个中间版本) | |||
第5行: | 第5行: | ||
*图2-17 for循环中使用break语句 | *图2-17 for循环中使用break语句 | ||
*[[文件:java2-19.png]] | *[[文件:java2-19.png]] | ||
− | * | + | *例如:碰到第一个被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); | ||
第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,即会离开循环主体,而继续执行循环外层的语句。
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程序设计