[英]Validating input with try-catch
我正在尝试学习try-catch使用并且必须验证输入,以便用户必须输入1或2才能继续该程序。 我相信我很接近,但如果用户输入错误的内容,例如'3'或'2.12',似乎无法让程序继续运行。
这就是我所拥有的:
String input = " ";
try {
Scanner scan = new Scanner(System.in);
input = scan.next();
Integer.parseInt(input);
if (!input.equals("1") && !input.equals("2")) {
System.out.println();
System.out.println("Invalid imput! Please select '1' or '2':");
}
} catch (InputMismatchException a) {
System.out.println();
System.out.println("Invalid imput! Please select '1' or '2':");
}
我没有必要为您的用例使用InputMismatchException
。 相反,如果输入与您的预期不符,您可以记录错误并提示用户再次输入。
但是,如果输入不是实际整数, [Integer#parseInt()][1]
会抛出异常。 在您的原始代码中,您实际上从未使用此调用的结果,但我在答案中已经这样做了。 在这种情况下,使用try-catch块可能有意义。
int result;
while (true) {
try {
Scanner scan = new Scanner(System.in);
input = scan.next();
result = Integer.parseInt(input);
} catch(Exception e) {
System.out.println("Could not parse input, please try again.");
continue;
}
if (result != 1 && result != 2) {
System.out.println("Invalid input! Please select '1' or '2':");
}
else {
break;
}
}
你应该把你的条件中的throw语句放入你的catch语句中获取错误,代码应该是这样的:
String input = " ";
try {
Scanner scan = new Scanner(System.in);
input = scan.next();
Integer.parseInt(input);
if (!input.equals("1") && !input.equals("2")) {
System.out.println();
System.out.println("Invalid imput! Please select '1' or '2':");
throw new InputMismatchException ();
}
} catch (InputMismatchException a) {
System.out.println();
System.out.println("Invalid imput! Please select '1' or '2':");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.