“异常控制循环”可能意味着循环,同时捕获异常,在达到正确输入时退出。尽管这个词似乎已经被那个“学习指南”所唤起了。
Bobby的答案是几乎没有,只是缺少2件重要的事情在catch块,以防止它进入无限循环:
import java.util.InputMismatchException;
import java.util.Scanner;
public class LoopWhileException {
public static void main(String[] args) {
boolean isNumber = false;
int number = 0;
Scanner scan = new Scanner(System.in);
while(!isNumber) {
try {
System.out.print("Enter an integer: ");
number = scan.nextInt();
System.out.print("Your integer is: " + number);
scan.close(); // close resources for good practice
// not true = false, exits loop on integer input
isNumber = true; // break; can also be used
} catch(InputMismatchException ime) {
System.out.print("Input is not a number!\n\n");
scan.nextLine(); // clears input buffer
// not false = true, re-enters while loop on catch
isNumber = false;
}
}
}
}
如前所述,这样的循环异常一般是不会接受的做法,但这只是所谓的“例外控制”情景的参考。
这个问题本身的气味,我喜欢它有一个就可以再用大牌子:'不要做' – Bobby 2011-12-16 13:06:14
难道说,导向装置沿着这些路线的东西:`而(true){if(1和5之间的输入){throw Exception();}}`? – Bobby 2011-12-16 13:07:34
作为一个有趣的笔记,[你不是第一个觉得这件事(http://answers.yahoo.com/question/index?qid=20110513111627AAkoPV6)。 – Bobby 2011-12-16 13:09:42