2017-10-20 131 views
0
try { 
     Character.isDigit(Integer.parseInt(txtWeight.getText())); 

    } catch (java.lang.NumberFormatException ex) { 
     JOptionPane.showMessageDialog(null, "Enter a number"); 
     pnlStart.setSelectedIndex(2); 

    } 

txtWeight是一個JTextField,用戶可以輸入自己的值。我需要檢查用戶輸入的是否是使用try catch的整數,以便該程序進入時不會崩潰。使用try catch語句檢查用戶的條目是否是整數

UPDATE:

boolean s = false; 
    while (s == false) { 
     try { 
      Integer.parseInt(txtWeight.getText()); 
     s = false; 
     } catch (NumberFormatException ex) { 
      JOptionPane.showMessageDialog(null, "Enter a number!"); 
      s =true;  
     } 

    } 
+2

什麼是你的問題:您正在使用if聲明,呼籲該boolean方法在做什麼?這段代碼有問題嗎? – 4castle

+0

嗯......我會這樣做的任何有符號,無符號,整數或雙數值的方式是使用[正則表達式](http://www.vogella.com/tutorials/JavaRegularExpressions/article.html)使用[** String.matches()**](https://www.tutorialspoint.com/java/java_string_matches.htm)方法:'if(s.matches(「 - ?\\ d +(\\。\ \ d +)?「)){//是的,它是數字。 }'。 – DevilsHnd

回答

0

我假設你的代碼不能正常工作?

我會做到這一點是建立一個布爾方法並返回true或false

boolean checkIfNumber(String s) { 
    try { 
     Integer.parseInt(s); 
    } catch (NumberFormatException ex) { 
     JOptionPane.showMessageDialog(null, "Enter a number!"); 
     return false; 
    } 
    return true; 
} 

編輯方式:

我想在這種情況下做的是,環繞的任何代碼

if (checkIfNumber(txtWeight.getText())) { 
    //do your code here 
} else { 
    //do something else if necessary if the return is false 
} 
+0

我的代碼發現它是不正確的數據,在catch語句中顯示消息,但運行代碼,儘管返回語句。我想用while循環,但我不知道如何解決這個問題。 –

+0

好的。我必須看到更多的代碼,並且可以更新我的答案。 – notyou

+0

我剛加了什麼改成試試修復它 –