7.7 breakcontinue

在有些情况下,先测试循环和后测试循环都无法完全满足需求。前一个示例就需要在循环中间进行测试,因此我们结合使用了一个标志变量和一个嵌套的 if-else 语句。

对于这个问题,更简单的解决方案是使用 break 语句。程序执行到 break 语句时退出当前循环。

  1. Scanner in = new Scanner(System.in);
  2. while (true) {
  3. System.out.print("Enter a number: ");
  4. if (in.hasNextDouble()) {
  5. break;
  6. }
  7. String word = in.next();
  8. System.err.println(word + " is not a number");
  9. }
  10. double x = in.nextDouble();

while 循环中将 true 用作循环条件是一种惯用法,通常意味着不断循环,但在这个示例中意味着不断循环,直到遇到 break 语句。

除退出循环的 break 语句外,Java 还提供了直接进入下一次迭代的 continue 语句。例如,下面的代码不断从键盘读取整数,并计算这些整数的总和;其中的 continue 语句让程序忽略所有的负数。

  1. Scanner in = new Scanner(System.in);
  2. int x = -1;
  3. int sum = 0;
  4. while (x != 0) {
  5. x = in.nextInt();
  6. if (x <= 0) {
  7. continue;
  8. }
  9. System.out.println("Adding " + x);
  10. sum += x;
  11. }

虽然 break 语句和 continue 语句让你能够更好地控制循环的执行流程,但也可能导致代码难以理解和调试,因此务必慎用。