跳转语句(break和continue)
跳转语句用于实现循环语句执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句。接下来分别对这两个语句进行详细地讲解。
1.break语句
在switch条件语句和循环结构语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构;当它出现在循环结构语句中时,作用是跳出当前循环结构语句,执行后面的代码。接下来将对文件2-11稍作修改,来演示while循环中break语句的用法,修改后的代码如文件1所示。
文件1 Example15.java
1 public class Example15 {
2 public static void main(String[] args) {
3 int x = 1; // 定义变量x,初始值为1
4 while (x <= 4) { // 判断循环条件是否成立
5 System.out.println("x = " + x); // 条件成立,打印x的值
6 if (x == 3) {
7 break; //使用break语句,当x==3时跳出while循环
8 }
9 x++; // 控制变量x,进行自增
10 }
11 }
12 }
运行结果如图1所示。
图1 运行结果
从图1可以看出,当x的值为3时就会执行break语句,从而跳出整个循环,因此打印结果中并没有出现“x = 4”。
循环结构中的break语句默认只会跳出当前所在循环,在嵌套循环结构中,如果想要在内层循环中使用break语句跳出外层循环,则需要预先对外层循环进行标记,然后使用break语句跳出指定的外层循环。接下来对文件2-14稍作修改,控制程序打印“二二乘法表”,如文件2所示。
文件2 Example16.java
1 public class Example16 {
2 public static void main(String[] args) {
3 // 外层循环,变量i控制输出1~9行
4 outer: for (int i = 1; i <= 9; i++) {
5 // 内层循环,变量j控制输出1~9列
6 for (int j = 1; j <= i; j++) {
7 if (i >= 3) {
8 break outer; // 当循环打印第3行时,直接跳出outer外层循环
9 }
10 // 使用字符串拼接的形式,打印每个内层循环的执行语句
11 System.out.print(j + "*" + i + "=" + j * i + "\t");
12 }
13 // 使用println()方法控制外层循环进行换行
14 System.out.println("");
15 }
16 }
17 }
运行结果如图2所示。
图2 运行结果
从图2可以看出,修改后的程序打印了2行结果,只输出了“二二乘法表”。因为文件2-16中,在外层for循环前面增加了标记“outer”,当i>=3时,使用break outer;语句会跳出指定的外层循环,因此程序只打印了2行结果。
2.continue语句
continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。接下来通过一个对1~100之内奇数求和的案例来演示continue语句的使用,如文件3所示。
文件3 Example17.java
1 public class Example17 {
2 public static void main(String[] args) {
3 int sum = 0; // 定义变量sum,用于记住和
4 for (int i = 1; i <= 100; i++) {
5 if (i % 2 == 0) { // i是一个偶数,不累加
6 continue; // 结束本次循环,进入下一次循环
7 }
8 sum += i; // 实现sum和i的累加
9 }
10 System.out.println("sum = " + sum);
11 }
12 }
运行结果如图3所示。
图3 运行结果
文件3中,使用for循环让变量i的值在1~100之间循环遍历,在循环过程中,使用i%2对变量i的值进行基偶数判断,当i的值为偶数时,将执行continue语句结束本次循环,进入下一次循环;当i的值为奇数时,sum和i进行累加,最终得到1~100之间所有奇数的和,打印“sum = 2500”。
在嵌套循环语句中,continue语句后面也可以通过使用标记的方式结束本次外层循环,用法与break语句相似,在此不再举例说明。