抛出NumberFormatException时如何重试解析double?

时间:2013-06-16 12:26:00

标签: java

如果从字符串解析双精度(由用户给出)时抛出NumberFormatException,我该如何重试?

String input = JOptionPane.showInputDialog(null, message + count);
double inputInteger = Double.parseDouble(input);

4 个答案:

答案 0 :(得分:0)

inputInteger = null;

while(inputInteger == null)
{
    input = JOptionPane.showInputDialog(null, message + count);
    try
    {
        if (isValidGrade(input, maxPoints))
            inputInteger = Double.parseDouble(input);
    }
    catch(NumberFormatException e)
    {
        // Show your error here
        inputInteger = null;
    }
}

答案 1 :(得分:0)

您需要将代码包装在try catch中并处理异常以执行任何操作。做这样的事:

       try {
                inputInteger = Double.parseDouble(input);
       }catch(NumberFormatException nfe) {
           // Go to take input again
       }

答案 2 :(得分:0)

您可以通过在catch块中递归调用该方法来完成此操作。举个例子:

public void yourMethod() {
     try {
          input = JOptionPane.showInputDialog(null, message + count);
          if (isValidGrade(input, maxPoints)){
          inputInteger = Double.parseDouble(input);
    } catch (NumberFormatException e) {
          this.yourMethod();
    }
}

这不是一个有效的代码,但在代码中使用了这个概念。使用while循环也是另一种选择。但我喜欢这种方法而不是while循环,因为这会减少内存开销。

答案 3 :(得分:0)

在这种情况下,你可以使用do-while循环来重复这些事情,并在满足所有条件时使布尔变量为false。

以下是一个例子:

    boolean isFailure=true;
     do{
        try{
            input = JOptionPane.showInputDialog(null, message + count);
            // do whatever you want....here...
            isFailure=false;

       }catch(NumerFormatException e){
            //log the exception and report the error
            JOptionPane.showMessageDialog(null,"Invalid Input! Try again!", "Error", 
 JOptionPane.ERROR_MESSAGE); 

         }

         }while(isFailure);