Java:检测变量是String还是Integer

时间:2013-02-19 16:04:26

标签: java string

我正在寻找一些有关我的家庭作业的帮助。我希望用户输入数字字符串,然后将其转换为整数。但我想制作一个循环来检测用户是否输入了错误的值,例如“One Hundred”为“100”。

我在想的是做这样的事情:

    do{
        numStr = JOptionPane.showInputDialog("Please enter a year in numarical form:"
                        + "\n(Ex. 1995):");
        num = Integer.parseInt(numStr);
            if(num!=Integer){
            tryagainstr=JOptionPane.showInputDialog("Entered value is not acceptable."
                                  + "\nPress 1 to try again or Press 2 to exit.");
    tryagain=Integer.parseInt(tryagainstr);
            }
            else{
            *Rest of the code...*
            }
            }while (tryagain==1);

但我不知道如何定义“整数”值。我基本上希望它能看到它是否是一个数字,以防止它在用户输入错误的东西时崩溃。

4 个答案:

答案 0 :(得分:5)

试试这个:

    try{
        Integer.valueOf(str);
    } catch (NumberFormatException e) {
        //not an integer
    }

答案 1 :(得分:2)

尝试使用instanceof,此方法可以帮助您检查多种类型

  

实施例

if (s instanceof String ){
// s is String
}else if(s instanceof Integer){
// s is Integer value
}

如果您只想检查整数和字符串,可以使用@NKukhar代码

try{
        Integer.valueOf(str);
    } catch (NumberFormatException e) {
        //not an integer
    }

答案 2 :(得分:1)

使用正则表达式验证字符串的格式,并仅接受其上的数值:

Pattern.matches("/^\d+$/", numStr)

如果matches包含有效的数字序列,true方法将返回numString,但当然输入可能高于Integer的容量。在这种情况下,您可以考虑切换为longBigInteger类型。

答案 3 :(得分:1)

试试这个

int num;
String s = JOptionPane.showInputDialog("Enter a number please");
while(true)
{
    if(s==null) 
        break; // if you press cancel it will exit
    try {
        num=Integer.parseInt(s);
        break;
    } catch(NumberFormatException ex)
    {
        s = JOptionPane.showInputDialog("Not a number , Try Again");
    }
}