1

我正在尝试在 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.");
        }
    }
4

1 回答 1

0

根据Class Scanner的文档:

“当扫描器抛出 InputMismatchException 时,扫描器不会传递导致异常的令牌,因此可以通过其他方法检索或跳过它。”

将 kb.next() 放在 catch 块中将有助于跳过有问题的输入。

于 2015-03-02T09:30:15.467 回答