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只是中断当次循环。如果后面的条件满足要求,还会继续执行。