除了按照循环结构的关系表达式及控制语句来控制程序的执行以外,Java还提供了break,continue来控制循环的中断和继续:
1)break 中断当前循环体
2)continue 提前结束本次循环
例子:
需求:连续输入一个大于1的3位数,判断它是否是合数,输入小于1的数则为非法提示重新输入(程序不结束),输入1则程序退出。
什么是合数?
引用百度百科:合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。与之相对的是质数,而1既不属于质数也不属于合数。
分析:
合数和素数(质数)是相对的,根据前边判断素数的经验编写程序如下:
import java.util.Scanner;
/**
* 面向过程编程-判断合数break,continue
* @author 攀博课堂(www.pbteach.com)
*
*/
public class NestedloopsDemo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x = 0;
while (true) {
System.out.println("请输入一个大于1的数:");
x = scanner.nextInt();
if(x<1) {
//提前结束本次循环,下边的语句不再执行,重新进入下一轮循环,
continue;
}
if (x==1) {
//break在外层,这里退出外层while循环,程序结束
System.out.println("程序退出!");
break;
}
// 设一个布尔变量,为true表示是合数,为false表示不是合数
boolean isComposite = false;
int i=2;
while(i<=x/2) {
if (x % i == 0) {//可以被整除说明是合数
isComposite = true;
break;
}
i++;
}
if (isComposite) {
System.out.println(x + "是合数");
}else {
System.out.println(x + "不是合数");
}
}
}
}
注意:
上边程序中用到了无限循环的写法
while(true){
}
一般在服务类的程序中多采用此种方式,因为服务类程序通常不结束程序,永远对外提供服务,上边的程序可以当成一个服务类程序,它所提供的服务就是输入一个数判断是否是合数。
除了服务类程序,通常在无限循环体中要考虑判断逻辑,符合条件将退出程序:
if(关系表达式){
break;
}