break: 终止循环
- 有时候,当循环进行到一定程度,没有必要继续往后循环的时候,我们需要手动跳出循环;
- 此时我们需要用到
Java
的关键字break
。
例1. 中断打印
- 用
for
将i
从1
循环到10
,打印i
, 当i > 5
时中断循环。
BreakALoop.java
public class BreakALoop {
public static void main(String[] args) {
int i = 1;
for ( ; i <= 10; i++) { // i的初始条件在上一句定义,括号里可以不写第一句
if(i > 5) {
break; // 跳出循环,后续的语句均不会被执行
}
System.out.print(i + "\t"); // i <= 5时会执行;当i = 6的时候,if语句体里已经跳出循环,这里不会被执行
}
System.out.println("\nOutside loop: i = " + i);
}
}
例2. 用for
循环实现:用户输入一个整数requiredSum
,找出n
,使得前n
个正整数的和大于requiredSum
。
分析: 因为我们无法预测需要前多少个数相加,保险起见,我们计划从1加到requiredSum
。循环过程中如果前n
个数的和超过requiredSum
,那么就终止循环。
SumAsRequiredSimple.java
public class SumAsRequiredSimple {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input a required sum: ");
int requiredSum = scanner.nextInt(); // 读入用户输入的整数
scanner.close();
int n = 1; // 连续增加的整数
int sum = 0; // 记录前n个数的和
for (n = 1; n <= requiredSum; n++) {
sum += n;
if (sum > requiredSum) break; // 如果前n个数的和大于requiredSum,终止循环
}
System.out.printf("\nThe first %d positive integers' sum is greater than %d\n", n, requiredSum);
}
}
扩展问题.
- 例2中,如果用户输入错误(负数或者0),要求重新输入,且用户最多不能尝试超过3次。那么要如何实现呢?
- 更糟糕的,如果用户输入的根本就不是整数,怎么办呢?
小问题.
有的同学可能发现了:return
也能跳出循环,那么return
和break
有什么区别呢?