2014-09-25 80 views
1

我知道這不應該太難,但我的搜索還沒有導致任何有用的。我想要做的就是確保用戶在textField中輸入正整數。我已經試過:如何驗證textField輸入?

public class myInputVerifier extends InputVerifier { 
    @Override 
    public boolean verify(JComponent jc) { 
     String text = ((jTextFieldMTU) jc).getText(); 
     //Validate input here, like check int by try to parse it using Integer.parseInt(text), and return true or false 

     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 
} 

所以我主要的代碼我想如果成功利用這個顯示「OK」,如果沒有成功的「輸入一個正數」。

有人可以指點我正確的方向嗎?謝謝!

+0

讓我來幫你解決這個問題:1)捕獲文本的內容字段2)解析字符串以產生一個int 3)檢查int是否> = 0。使用你的Google Fu,並且請刪除這個問題 - 這是脫離主題。 – MarsAtomic 2014-09-25 18:22:28

+2

@MarsAtomic:我不會說這是脫離主題,因爲這是一個有效的問題,但也許在提問之前沒有經過深入研究。 – 2014-09-25 18:26:31

+0

@HovercraftFullOfEels你好嗎? – 2014-09-25 18:33:53

回答

4

你可以使用try-catch塊來檢查,如果輸入的是一個整數:

try { 
    int i = Integer.parseInt(input); 
    // input is a valid integer 
} 
catch (NumberFormatException e) { 
    // input is not a valid integer 
} 
+1

是的,1+。然後從解析下面(在檢查它> 0之後)返回true,並從catch塊返回false,以便驗證方法的行爲適當。 – 2014-09-25 18:24:38

+0

@Yellos謝謝你的回答,我會試一試。我想我不確定的是如何實現這一點,因爲它需要進入自己的方法,然後在程序中的其他地方調用該方法。我會惹惱一下,謝謝。 – shoota 2014-09-25 18:41:17

0

我建議你使用嘗試捕捉。 捕獲NumberFormatException。 用這種方法檢查文本是否可以解析爲整數。如果不是,則可以向用戶顯示錯誤消息。 之後,您可以使用if else語句來檢查數字是否爲正數,如果不是正數,則可以給用戶一個錯誤消息。如果你不知道,我建議你研究一下。

1

String有匹配方法,您可以使用正則表達式來查看內容是否與特定模式匹配。正整數的正則表達式是^ [1-9] \ d * $,所以你可以像這樣使用它...

boolean matches = text.matches("^[1-9]\d*$"); 

if(matches){ 
    //Do something if it is valid 
}else{ 
    //Do something if it is not 
} 
+0

感謝您的回答。你能告訴我什麼「^ [1-9] \ d * $」做或至少被調用,所以我可以研究它。我在我的研究中看過幾次,但我還沒有找到任何有用的文檔(可能是因爲我不知道它爲什麼叫它)。 – shoota 2014-09-25 18:37:58

+1

[這是對Java中正則表達式字符的很好的參考。](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) 它基本上讀取「匹配任何以1-9的數字開頭的字符串,後跟任意數量的有效數字,並以數字結尾。「 正則表達式是一種將搜索模式表示爲字符串的方式。如果你不熟悉它們,YouTube上會有一些很棒的視頻教程來解釋它們。 – 2014-09-25 18:41:54

+0

謝謝,我會給你一個閱讀。 – shoota 2014-09-25 18:48:08