gpt4 book ai didi

java - 为什么扫描仪不在 try-catch while 循环 java 中要求其他输入

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:10 24 4
gpt4 key购买 nike

假设我需要不断询问用户,直到他输入一个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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com