我试图在while循环内执行try catch块。当我要求用户输入数字(应该是双精度数字)时,我会使用try catch来捕获任何输入不匹配异常。我将其嵌套在while循环中,以便如果捕获到任何异常,则用户可以根据需要重新输入其输入。问题是,如果捕获到异常,扫描仪将由于某种原因不允许用户重新输入他们的输入。当您返回显示hours = kb.nextDouble的行时,将在第二次迭代期间捕获错误。这是代码。
boolean condition = true;
while(condition==true) {
try {
// prompt user to enter hours of service used
System.out.println("Please enter the number of hours of service you have used: ");
hours = kb.nextDouble();
// validate hours
while(hours <=0){
System.out.println("You must enter a positive number.");
hours = kb.nextDouble();
} condition = false;
} catch (InputMismatchException ime){
System.out.println("You must enter a decimal value for hours.");
}
}
根据Class Scanner的文档:
“当扫描程序引发InputMismatchException时,扫描程序将不会传递导致异常的令牌,因此可以通过其他方法检索或跳过它。”
将kb.next()放在catch块中将用于跳过有问题的输入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句