我如何在处理异常的同时接受输入?
How do I take input along with handling exceptions?
我想从用户那里获取一个整数输入。我正在使用 try-catch 异常,因此如果输入不是 int
,它会要求用户输入另一个输入。我写了下面的代码:
while (flag==true) {
try {
System.out.println("Enter the encryption key!");
k = input.nextInt();
flag = false;
}
catch (InputMismatchException ex) {
System.out.println("Please enter integer value!(");
}
}
但是当出现异常时循环继续打印
"Enter the encryption key!"
"Please enter integer value!"
无限,因为扫描仪输入不会等待另一个输入。
我该如何解决这个问题?
您应该在 catch
子句中调用 next
,这将解决问题。
When a scanner throws an InputMismatchException
, the scanner will not
pass the token that caused the exception, so that it may be retrieved
or skipped via some other method.
如果 catch
子句中没有 next
,input.nextInt();
将继续读取相同的标记,添加 next
将消耗该标记。
您可以尝试使用
input.nextLine()
因为它会一直等到您按回车键。但是如果我没记错的话,你需要把它解析成一个整数。
你应该采纳 Maroun Maroun
的建议,对我来说看起来更干净。
另一种方法是重新初始化循环中的Scanner
。
boolean flag = false;
while (!flag) {
try {
input = new Scanner(System.in);//Initialize it here
//....
我想从用户那里获取一个整数输入。我正在使用 try-catch 异常,因此如果输入不是 int
,它会要求用户输入另一个输入。我写了下面的代码:
while (flag==true) {
try {
System.out.println("Enter the encryption key!");
k = input.nextInt();
flag = false;
}
catch (InputMismatchException ex) {
System.out.println("Please enter integer value!(");
}
}
但是当出现异常时循环继续打印
"Enter the encryption key!"
"Please enter integer value!"
无限,因为扫描仪输入不会等待另一个输入。
我该如何解决这个问题?
您应该在 catch
子句中调用 next
,这将解决问题。
When a scanner throws an
InputMismatchException
, the scanner will not pass the token that caused the exception, so that it may be retrieved or skipped via some other method.
如果 catch
子句中没有 next
,input.nextInt();
将继续读取相同的标记,添加 next
将消耗该标记。
您可以尝试使用
input.nextLine()
因为它会一直等到您按回车键。但是如果我没记错的话,你需要把它解析成一个整数。
你应该采纳 Maroun Maroun
的建议,对我来说看起来更干净。
另一种方法是重新初始化循环中的Scanner
。
boolean flag = false;
while (!flag) {
try {
input = new Scanner(System.in);//Initialize it here
//....