假设我需要不断询问用户,直到他输入一个double
。
我所做的是使用 while 循环并检查是否有异常。
如果有异常,我会去询问下一个输入。
double bal = 0;
Scanner sc = new Scanner(System.in);
while (true) {
try {
System.out.println("Enter the balance");
bal = sc.nextDouble();
break;
} catch (Exception e) {
System.out.println("That isn't a number");
}
}
System.out.println("Bal is " + bal);
sc.close();
但如果我输入一个非 double 值,那么它不会要求下一个输入,而是继续打印以无限循环结尾的这两行。
Enter the balance
XYZ
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
....
我缺少什么?
最佳答案
您需要通过在 catch block 中调用 sc.next()
来丢弃流中的先前输入。遗憾的是,当输入失败时,扫描仪不会自动执行此操作。
关于java - 为什么扫描仪不在 try-catch while 循环 java 中要求其他输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305011/