
3.4 跳转语句
跳转语句可以改变代码的执行顺序,通过这些语句可以实现代码的跳转。Java语言提供的跳转语句有break语句、continue语句,如表3-3所示。
表3-3 跳转语句

3.4.1 break语句
break主要用在循环语句或者switch语句中,用来跳出整个语句块。当break跳出最里层的循环后,将继续执行该循环下面的语句,书写格式有如下3种:
第1种:

第2种:

第3种:

当循环执行到“break”语句时,就跳出循环,不用执行“break”后面的语句。如果用户使用的是嵌套循环(即一个循环内嵌套另一个循环),break语句会停止执行最内层的循环,然后开始执行该语句块之后的下一行代码。
Java语言中break语句的语法格式如下:
break;
break语句的流程如图3-27所示。

图3-27 break语句的流程
break语句用在循环语句的循环体内的作用是终止当前的循环语句。例如:
无break语句:

有break语句:

这两段程序产生的效果是一样的。需要注意的是,break语句只是跳出当前的循环语句,对于嵌套的循环语句,break语句的功能是从内层循环跳到外层循环。例如:

本例中的break语句执行后,程序立即终止for循环语句,并转向for循环语句的下一个语句,即while循环体中的i++语句,继续执行while循环语句。
【例3.12】编写程序,输入两个数值,然后输出这两个数值的前3个公约数(源代码\ch03\3.12.txt)。


图3-28 输出指定个数的公约数
运行结果如图3-28所示。这里输入的是60和50,这两个数的公约数为1、2、5、10共4个,而在指定个数后,输出的公约数只有3个,也就是当程序执行到break语句后,跳出了循环。
3.4.2 continue语句
continue语句跳转跟break是不一样的,它不是结束整个循环,而是跳过当前循环,直接进入下次循环。对于for循环语句,continue语句执行后自增语句仍然会执行。对于while循环语句和do…while循环语句,continue语句重新执行条件判断语句。continue语句书写格式有如下3种:
第1种:

第2种:

第3种:

Java语言中continue语句的语法格式如下:
continue;
continue语句的流程如图3-29所示。
通常情况下,continue语句总是与if语句联在一起,用来加速循环。假设continue语句用于while循环语句,要求在某个条件下跳出本次循环,一般形式如下:

这种形式和前面介绍的break语句用于循环的形式十分相似,其区别是:continue只终止本次循环,继续执行下一次循环,而不是终止整个循环。而break语句则是终止整个循环过程,不会再去判断循环条件是否还满足。在循环体中,continue语句被执行之后,其后面的语句均不再执行。
【例3.13】编写程序,输出10以内所有的偶数(源代码\ch03\3.13.txt)。

运行结果如图3-30所示。这里是使用一个for循环语句输出10以内的所有值,如果输出的值是奇数,则使用continue语句跳过本次循环。

图3-29 continue语句的流程

图3-30 输出10以内的所有偶数