4.4 中断与继续语句

在实际编程中,可能会出现中断某个程序;或从一个程序点开始,继续执行程序的特殊情况。对于这些特殊情况,Java会使用中断与继续功能来解决。

4.4.1 中断控制语句

在Java程序开发中,使用关键字break来表示中断控制。中断控制语句用来强行退出程序的循环体部分或分支语句(如switch语句)。在switch分支语句中,已经使用过break语句,一旦执行该跳转语句,程序就退出switch语句。

【实例4-14】为了能熟悉中断控制语句,下面看一个简单的程序段,通过这个例子,可以看到中断控制语句在实际开发中的用处。

01        //通过system.out语句可以将数据打印出来
02        public class Control11                                   //定义一个Control11类
03        {
04            public static void main(String[] args)               //主方法
05            {
06                int i=1;                                         //定义整型变量i并赋值
07                while(i<=10)                                  //循环判断
08                {
09                    System.out.println(i);                       //输出i值
10                    i++;                                         //x值自加
11                    if(i>5)                                   //条件判断
12                    {break;}                                     //退出
13                }
14            }
15        }

【代码说明】第11行添加了一个条件语句,当变量i大于5时,使用break语句退出while循环体。

【运行效果】

1
2
3
4
5

【实例4-15】如果上述代码中,没有中断语句强行退出,则代码如下所示:

01        //如果没有中断语句,则会循环到最后
02        public class Control12                               //定义一个Control12类
03        {
04            public static void main(String[] args)           //主方法
05            {
06                int i=1;                                     //定义整型变量并赋值
07                while(i<=10)                              //循环判断
08                {
09                    System.out.println(i);                   //输出i值
10                    i++;                                     //i自加
11                }
12             }
13        }

【代码说明】第7~11行是while循环体,这里没有使用中断语句,所以符合条件的变量i值全部输出。

【运行效果】

1
2
3
4
5
6
7
8
9
10

从上面两个实例的程序段运行结果可以看出:当使用了break语句后,程序执行到“x=6”时,根据条件判断“x>5”,执行中断语句,直接退出程序的循环体部分。

说明 由以上程序段可以总结出一个规律:中断语句一般会与条件语句结合使用,当满足条件语句中的条件时,就会执行中断语句。

【实例4-16】下面再看一个有关中断语句的例子。

01        //将system.out语句放置在中断语句之前,则会循环一次,再退出循环
02        public class Control13                                        //定义一个Control13类
03        {
04            public static void main(String[] args)                    //主方法
05            {
06                for(int i=2;i<10;i++)                              //for循环条件
07                {
08                    System.out.println(i);                            //输出i的值
09                    if(i%2==0)                                        //条件判断是否被2整除
10                    {break;}                                          //退出
11                }
12                System.out.println("退出来了");                       //输出提示
13            }
14        }

【代码说明】第9~10行是条件语句和中断语句的集合,在符合条件的时候,退出for循环体。当“i”是偶数的时候,直接中断循环体。由于第8行的输出方法属于循环体中的方法,所以不会执行它。

【运行效果】

2
退出来了

【实例4-17】将输出方法的位置进行调整,再看下面的代码。

01        //将system.out语句的位置放置在中断语句之后,则直接退出循环
02        public class Control14                                       //定义一个Control14类
03        { 
04            public static void main(String[] args)                   //主方法
05            {
06                for(int i=2;i<10;i++)                             //for循环条件
07                {
08                    if(i%2==0)                                       //条件判断是否被2整除
09                    {break;}                                         //退出
10                    System.out.println(i);                           //输出i的值
11                }
12                System.out.println("退出来了");                      //输出提示
13            }
14        }

【代码说明】与前面的程序段一样,代码会直接跳出循环体程序,第12行的输出方法在循环体外,所以得以执行。

【运行效果】

退出来了

通过上述几个实例,可以总结出中断语句的使用方法:一般和条件判断语句结合使用,中断语句是中断整个循环体。跳出循环体后,直接执行循环体以外的语句。

4.4.2 继续语句

在Java程序设计中,继续语句使用关键字continue表示。当执行continue语句时,程序从循环体的开始处执行,而不考虑循环体中已经执行了多少轮循环,在for循环语句中,执行到continue语句时,不再执行循环体中其他代码,而是直接跳转到增量表达式,再开始下一轮的for循环。在while和do…while语句中,运行到continue语句时则跳转到相应的条件表达式,再开始下一轮的循环。

【实例4-18】下面先看一个有关继续语句的实例。

01        //只在奇数时,才输出,偶数时,会退出本次循环
02        public class Control15                                    //定义一个Control15类
03        { 
04            public static void main(String[] args)                //主方法
05            {
06                for(int i=1;i<10;i++)                          //for循环条件
07                {
08                    if(i%2==0)                                    //条件判断是否被2整除
09                    {continue;}                                   //继续语句
10                    System.out.println(i);                        //输出i的值
11                }
12                System.out.println("退出来了");                    //输出提示
13            }
14        }

【代码说明】仔细分析以上的程序段,如果使用break语句,那么运行结果中只有一个“1”,而用了继续语句,则输出了10以内的奇数。在程序中,如果i是偶数,遇到继续语句,就终止“System.out.println(i)”这条语句,又跳到循环开始,重新循环。所以,只要遇到偶数就会终止程序,遇到奇数程序就会继续运行。

【运行效果】

1
3
5
7
9
退出来了

注意 一定要注意break和continue的区别,break是直接跳出循环,而continue只是中断当次循环。如果后面的条件满足要求,还会继续执行。