7.7 break和continue
在有些情况下,先测试循环和后测试循环都无法完全满足需求。前一个示例就需要在循环中间进行测试,因此我们结合使用了一个标志变量和一个嵌套的 if-else 语句。
对于这个问题,更简单的解决方案是使用 break 语句。程序执行到 break 语句时退出当前循环。
Scanner in = new Scanner(System.in);while (true) {System.out.print("Enter a number: ");if (in.hasNextDouble()) {break;}String word = in.next();System.err.println(word + " is not a number");}double x = in.nextDouble();
在 while 循环中将 true 用作循环条件是一种惯用法,通常意味着不断循环,但在这个示例中意味着不断循环,直到遇到 break 语句。
除退出循环的 break 语句外,Java 还提供了直接进入下一次迭代的 continue 语句。例如,下面的代码不断从键盘读取整数,并计算这些整数的总和;其中的 continue 语句让程序忽略所有的负数。
Scanner in = new Scanner(System.in);int x = -1;int sum = 0;while (x != 0) {x = in.nextInt();if (x <= 0) {continue;}System.out.println("Adding " + x);sum += x;}
虽然 break 语句和 continue 语句让你能够更好地控制循环的执行流程,但也可能导致代码难以理解和调试,因此务必慎用。
