7.6 do-while循环
while 语句和 for 语句都是先测试循环(pretest loop),即在每次循环前都要测试条件。
Java 还提供了一种后测试循环(posttest loop)——do-while 语句。在至少需要运行循环一次时,这种循环很有用。
例如,在 5.7 节中用了 return 语句来避免读取无效的用户输入。我们也可以用 do-while 循环不断读取输入,直到用户输入有效为止:
Scanner in = new Scanner(System.in);boolean okay;do {System.out.print("Enter a number: ");if (in.hasNextDouble()) {okay = true;} else {okay = false;String word = in.next();System.err.println(word + " is not a number");}} while (!okay);double x = in.nextDouble();
这些代码看似很复杂,但其实只包含三个步骤。
(1) 显示提示。
(2) 检查输入。如果无效就显示错误消息并重新开始。
(3) 读取输入。
上述代码使用了标志,变量 okay 来指出是否要再次执行循环体。如果 hasNextDoublec() 返回 false,那么就调用 next() 来提取无效输入,再通过 System.err 显示一条错误消息, hasNextDouble() 返回 true 后终止循环。
