重复例外

时间:2015-09-28 22:22:10

标签: java exception netbeans while-loop

我在下面的代码中使用了一个例外。我希望能够重复这个问题,直到他们输入正确的值,即double或int值。我的问题是当我第二次要求价值时。我应该更改或使用什么来解决这个问题?

do{   
    try{
        System.out.println("Enter number");
        number = Double.parseDouble(br.readLine());      
    } catch(Exception ex) {
        System.out.println(ex +"\nEnter an int or double value");
        number = Double.parseDouble(br.readLine());             
    }
} while(false);

输出:

Enter number

qwe

java.lang.NumberFormatException: For input string: "qwe"

Enter an int or double value

we

Exception in thread "main" java.lang.NumberFormatException: For input string: 

"we"

    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)

    at java.lang.Double.parseDouble(Double.java:540)

    at practicedd.PracticeDD.main(PracticeDD.java:38)

Java Result: 1

2 个答案:

答案 0 :(得分:0)

你的第二个parseDouble不在try / catch中,所以没有任何东西被抓住。另外,你的while(false)只会让它第一次执行。这对你有用吗?此外,您可以执行一段时间(true)并在parseDouble之后中断。

Double number = null;

do{
try{


System.out.println("Enter number");
number = Double.parseDouble(br.readLine());

}catch(Exception ex){
    System.out.println(ex +"\nEnter an int or double value");
}
}while(number==null);

}   }

答案 1 :(得分:0)

您的代码几乎是正确的。首先,您需要更改while循环的条件,并且还需要突破它

do{   
    try{
        System.out.println("Enter number");
        number = Double.parseDouble(br.readLine());
        break;      
    } catch(Exception ex) {
        System.out.println(ex +"\nEnter an int or double value");
        number = Double.parseDouble(br.readLine());             
    }
} while(true);