在Java中,如何检查输入是否为数字?

时间:2013-01-16 13:49:14

标签: java swing parseint

我正在创建一个简单的程序,可以让你添加一个比赛的结果,以及他们用完的秒数。所以为了输入时间,我做了这个:

int time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));

所以我的问题是,如果他输入的数字不是正数,我怎么能向用户显示错误信息?就像MessageDialog一样,在输入数字之前会给出错误。

4 个答案:

答案 0 :(得分:11)

int time;
try {
    time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
} catch (NumberFormatException e) {
    //error
}

Integer.parseInt如果无法解析NumberFormatException,则会抛出int。 如果您只想在输入无效时重试,请将其包装在while循环中,如下所示:

boolean valid = false;
while (!valid) {
    int time;
    try {
        time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
        if (time >= 0) valid = true;
    } catch (NumberFormatException e) {
        //error
        JOptionPane.showConfirmDialog("Error, not a number. Please try again.");
    }
}

答案 1 :(得分:2)

Integer.parseInt当Integer.parseInt的参数不是整数时抛出NumberFormatException,使用try Catch并显示所需的错误消息,将其保存在do while循环中,如下所示

   int   time = -1;
   do{
       try{
            time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
       }
       catch(NumberFormatException e){

       }
   }while(time<=0);

答案 2 :(得分:1)

如果JOptionPane.showInputDialog("Enter seconds")不是有效号码,您将获得NumberFormatException。对于正数检查,只需检查time >=0

答案 3 :(得分:0)

取决于您希望如何解决它。 一种简单的方法是将时间声明为整数,然后执行:

Integer time;    
while (time == null || time < 0) {
    Ints.tryParse(JOptionPane.showInputDialog("Enter seconds"));
}

当然,这需要你使用谷歌番石榴。 (其中包含许多其他有用的功能)。

另一种方法是使用上面的代码,但使用标准的tryparse,捕获NumberFormatException并在catch中不执行任何操作。

有很多方法可以解决这个问题。

或者不重新发明轮子并使用: 来自NumberUtils.isNumber的{​​{1}}或StringUtils.isNumeric