7.6 do-while循环

while 语句和 for 语句都是先测试循环(pretest loop),即在每次循环前都要测试条件。

Java 还提供了一种后测试循环(posttest loop)——do-while 语句。在至少需要运行循环一次时,这种循环很有用。

例如,在 5.7 节中用了 return 语句来避免读取无效的用户输入。我们也可以用 do-while 循环不断读取输入,直到用户输入有效为止:

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

这些代码看似很复杂,但其实只包含三个步骤。

(1) 显示提示。

(2) 检查输入。如果无效就显示错误消息并重新开始。

(3) 读取输入。

上述代码使用了标志,变量 okay 来指出是否要再次执行循环体。如果 hasNextDoublec() 返回 false,那么就调用 next() 来提取无效输入,再通过 System.err 显示一条错误消息, hasNextDouble() 返回 true 后终止循环。