2016-07-06 201 views
1

我創建了一個簡單的應用程序,用戶輸入兩個值並自動用答案更新文本字段,並檢查輸入是否爲數字。允許jTextField爲空?

的代碼(這個問題使用:How to Auto Calculate input numeric values of Text Field in JAVA)來檢查該用戶輸入如下:

private boolean isDigit(String string) 
{ 
    for (int n = 0; n < string.length(); n++) 
    { 
     //get a single character of the string 
     char c = string.charAt(n); 

     if (!Character.isDigit(c)) 
     { 
      //if its an alphabetic character or white space 
      return false; 
     } 
    } 
    return true; 
} 

它的工作原理,但是當文本框是空白的,下面的錯誤信息出現:java.lang.NumberFormatException: For input string: ""

如何更改我使用過的代碼,以便可以接受空白文本字段並且不會產生錯誤?

+0

您可以使用[文件](https://docs.oracle.com/javase /7/docs/api/javax/swing/text/Document.html)請參閱http://stackoverflow.com/questions/37459857/parsing-jtextfield-string-int-integer/37460526#37460526舉例 – Ian2thedv

+0

您可以使用正則表達式:'Pattern.compile(「\\ d +」).matcher(string).matches()' –

回答

2

您只需在開始添加if來檢查字符串是合法

private boolean isDigit(String string) 
{ 
    if(string == null || string.isEmpty()) { 
     return false; 
    } 

    for (int n = 0; n < string.length(); n++) 
    { 
     //get a single character of the string 
     char c = string.charAt(n); 

     if (!Character.isDigit(c)) 
     { 
      //if its an alphabetic character or white space 
      return false; 
     } 
    } 
    return true; 
} 
+0

@VinceEmigh ofcourse,thank you –

2

不能對空字符串或空格申請ISDIGIT()。 您可以使用「如果」條件檢查,如果字符串是空的之前與邏輯出發,這樣的事情:

private boolean isDigit (String string) { 
     if (string.length()>=1) { 
       for (int n = 0; n < string.length(); n++) { 
        //logic 
       } 
     }else { 
       return false; 
     } 
}