文章导读
【有时可能不知道循环将要执行的次数,终止循环的条件可在以后确定,所以需要提供一种机制在条件满足的时候跳出循环。另外一种情况是跳过循环体中剩余的语句而准备执行下一次循环。本篇讲述break和continue语句的语法规则及使用方法。通过本篇的学习,你将掌握如何使用break和continue语句,用于解决上面提到的问题】
本文分成两个小节,第一小节讲述break语句;第二小节讲述continue语句。
第一小节 break语句
有时可能不知道循环将要执行的次数,终止循环的条件可在以后确定,所以需要提供一种机制在条件满足的时候跳出循环。有时候,我们需要根据条件跳过循环中的一些语句。Java语言提供了break和continue两个关键字,用于改变程序的控制流。
break语句通常用在前面介绍过的switch语句及循环语句中。当break语句用于switch语句时,可使程序跳出switch语句而执行switch语句之后的语句;当break语句用于while、do-while、for循环语句时,可使程序终止循环而执行循环后面的语句。
break语句实际上就是为了使人能方便地描述从循环执行中退出的动作。通常应把break语句放在条件语句控制之下,以便在某些条件成立时立即结束循环。
编程示例1
任务要求:使用break语句退出循环。
程序思路分析:编写一个循环程序,设置循环条件为true,也就是无限循环,声明变量i,并初始化为0。在循环体中i进行自增操作,当该循环变量i的值等于5时,执行break语句,结束该无限循环。
程序代码如下:
package condition;
public class BreakSample1 {
public static void main(String[] args) {
int i = 0;
while (true) {
i++;
System.out.printf("\n 第%d次循环", i);
if (i == 5) {
System.out.printf("\n i==5 跳出循环,程序结束", i);
break;
}
}
}
}编程示例2
任务要求:使用break语句跳出switch结构。
程序思路分析:switch后面的表达式为变量i,i赋值5,然后依次与case语句的常量表达式进行匹配,匹配成功的项,执行break语句跳出switch结构。
程序代码如下:
package condition;
public class BreakSample2 {
public static void main(String[] args) {
int i = 5;
switch (i) {
case 1:
System.out.println("this is 1");
break;
case 2:
System.out.println("This is 2");
break;
case 3:
System.out.println("This is 3");
break;
case 4:
System.out.println("This is 4");
break;
case 5:
System.out.println("This is 5");
break;
default:
System.out.println("This is default");
}
}
}第二小节 continue语句
continue语句只能用在循环里。continue语句的作用是跳过循环体中剩余的语句而准备执行下一次循环。对于while和do-while循环,continue执行之后的动作是条件判断;对于for循环,随后的动作是变量更新。
注意break语句和continue语句的差别。break语句导致循环终止,使程序控制流转向这个循环语句之后;而continue引起的则是循环内部的一次控制转移,使执行控制跳到循环体的最后,相当于跳过循环体里这个语句后面的那些语句,继续下一次循环,下图说明了break语句和continue语句引起的控制转移的情况。

图 20?1 break和continue语句引起的控制转移
编程示例3
任务要求:求整数1—100的累加值,但要求跳过所有个位为3的数。
程序思路分析:在循环中加一个判断,如果该数个位是3,就跳过该数不加。如何判断1到100中的那些整数的个位是3呢,还是使用取余运算符“%”,将一个正整数,除以10以后余数是3,就说明这个数的个位为3。
编写循环语句,i为循环控制变量,循环条件为i从1到100,程序检查i除以10的余数是否等于3,如果是,则意味该数的个位数是3,这种情况下,将使用continue语句跳过后续语句,然后转向for循环的表达式3更新循环变量,继续下一次循环。
程序代码如下:
package condition;
public class ContinueSample {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
int sum = 0;
for (i = 1; i <= 100; i++) {
if (i % 10 == 3) {
continue;
}
sum += i;
}
System.out.printf("sum = %d", sum);
}
}
■ 文章小结
1、break语句通常在循环中与条件语句一起使用。若条件值为真,则跳出循环。控制流转向循环后面的语句。如果已执行break语句,则不会执行循环体中位于break语句后的语句。在多层循环中,一个break语句只能向外跳出一层循环。
2、和break语句一样,continue语句通常在循环中与条件语句一起使用,用来控制循环。在循环中遇到continue语句后,就不会执行该循环中位于continue后的任何语句。continue语句用于结束当次循环,继续下一次循环。
■ 思考与练习
1、编写一个程序,要求循环接收用户输入的数字,并显示到屏幕上,当用户输入100,程序用break语句跳出循环,程序结束。
2、编写一个程序,输出100以内的整数,要求输出的整数不包括3、5以及3和5的倍数。
提示:可以利用取余运算符“%”,判断一个数值是否是3和5的倍数。