在while循环中执行try / catch

时间:2015-02-23 05:05:06

标签: exception-handling while-loop try-catch nested-loops inputmismatchexception

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

1 个答案:

答案 0 :(得分:0)

根据Class Scanner的文件:

  

&#34;当扫描程序抛出InputMismatchException时,扫描程序不会   传递导致异常的令牌,以便可以检索它   或者通过其他方法跳过。&#34;

将kb.next()放入catch块可以跳过违规输入。