2017-10-20 97 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

我刚加了什么改成试试修复它 –