验证java中的双输入

时间:2014-09-30 00:45:44

标签: java validation

我正在尝试验证java中的双输入,但每次更改方法或变量类型时我都会收到错误消息。代码如下:

do{ 
      gpa = getDouble(" GPA:");
      gpaError = dblChecker(gpa);
       if(!gpaError){
         JOptionPane.showMessageDialog(null,"Incorrect Input. Please Try             Again!");//displays incorrect input message on JOptionPane
       }
      } while(!gpaError);// checks for proper input

public static String getInput(String data){
      String input = "";
      input = javax.swing.JOptionPane.showInputDialog(null,"Enter your " + data);
      return input;
  }// end getInput information

private static String getString(String message) {
String input = JOptionPane.showInputDialog(null, message, "Input",
    JOptionPane.QUESTION_MESSAGE);
return input;
}

private static double getDouble(String message) {
    String input = getInput(message);
    return Double.parseDouble(input);
    }   

 public static boolean dblChecker(String instr){
     boolean outBool = true;
     double tmpDbl = 0.0;
     try{
         tmpDbl = Double.parseDouble(instr);
         if(tmpDbl <= 0)
             throw new IllegalArgumentException();
        }
     catch (Exception e){
         outBool = false;
     }
     return outBool;
 } //end validation for GPA

2 个答案:

答案 0 :(得分:1)

我使用Double.valueOf并且它可以正常工作

答案 1 :(得分:0)

节省一些时间和精力,专注于特定领域的问题!

20年前编写的本地.parse()方法差不多,它们是一个糟糕的API。

使用Google Guava Doubles.tryParse();

  

将指定的字符串解析为双精度浮点   值。 ASCII字符&#39; - &#39; (&#39; \ u002D&#39;)被识别为减号   标志。与Double.parseDouble(String)不同,此方法返回null   如果解析失败,而不是抛出异常。有效输入是   正是Double.valueOf(String)接受的那些,除了前导   并且不允许使用尾随空格。

     

这个实现可能比Double.parseDouble更快   预计会有很多失败。