如果用户输入一个非数字值,例如“你好”,我想给用户一个新的机会来输入一个数字值,直到他成功。
运行下面的代码,如果用户输入非数字值,文本“这不是数字值。输入数字值:”将显示在控制台中。但是,用户将无法输入新值。因为错误消息“线程中的异常...”将显示并停止程序。
我该如何解决这个问题?
编辑!
新代码(此代码有效,但它完全停止程序。之后调用的每个方法都不会运行。)Edit2!那没起效!
int number;
do {
try {
System.out.println("Enter a numeric value: ");
number = Integer.parseInt(s.nextLine());
if (s.nextInt() != (int)number) {
throw new NumberFormatException();
}
break;
}
catch (NumberFormatException e) {
System.out.println("This is not a numeric value. Enter a numeric value: ");
}
} while (true)
旧代码
int number;
try {
Scanner s = new Scanner(System.in);
System.out.println("Enter a numeric value: ");
number = s.nextInt();
if (number != (int)number) {
throw new Exception();
}
}
catch(Exception e) {
do {
System.out.println("This is not a numeric value. Enter a numeric value: ");
number = s.nextInt();
} while (number != (int)number);
}