break: 终止循环

  • 有时候,当循环进行到一定程度,没有必要继续往后循环的时候,我们需要手动跳出循环
  • 此时我们需要用到Java的关键字break

例1. 中断打印

  • fori1循环到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次。那么要如何实现呢?
  • 更糟糕的,如果用户输入的根本就不是整数,怎么办呢?

Solution.

小问题.
有的同学可能发现了:return也能跳出循环,那么returnbreak有什么区别呢?