2014-09-30 55 views
-3

我想驗證java中的雙輸入,但每次更改方法或變量類型時都會收到錯誤消息。代碼如下:在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 
+3

你什麼錯誤信息? – 2014-09-30 00:46:40

+0

他們希望我將檢查方法更改爲雙I/O字符串。當我這樣做時,檢查器中的parseDouble想讓我將其更改回字符串 – Beth 2014-09-30 01:02:14

+1

這是一個很大的代碼,只有一小部分與「驗證雙重輸入」有關。您應該首先定義(英文)您的問題:什麼是有效的輸入?然後,如果你不能用Java實現它,用你目前的努力創建一個*最小的工作示例*,並解釋爲什麼它不能做你想做的。 – 5gon12eder 2014-09-30 01:09:39

回答

1

我用Double.valueOf和它的作品

0

節省自己一些時間和精力,專注於特定領域的問題!

本地.parse()方法寫在20年前差不多,它們是一個可怕的API。

使用Google Guava Doubles.tryParse();

解析指定的字符串作爲一個雙精度浮點 值。 ASCII字符' - '('\ u002D')被識別爲減號 符號。與Double.parseDouble(String)不同,此方法返回空 ,而不是在解析失敗時拋出異常。有效輸入爲 ,與Double.valueOf(String)接受的值完全相同,但前導 不允許使用尾隨空格。

如果 預計會出現許多故障,此實現可能會比Double.parseDouble更快。

+0

tryParse沒有工作。我使用Double.valueOf,它的工作原理。 – Beth 2014-09-30 02:57:37

+1

@Beth:如果你在你的類路徑中包含Guava,我懷疑它會起作用。 – Makoto 2014-09-30 04:42:27