2

我正在为我的一些家庭作业寻求帮助。我希望用户输入一个数字字符串,然后将其转换为整数。但是我想创建一个循环来检测用户是否输入了错误的值,例如与“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

4 回答 4

5

试试这个:

    try{
        Integer.valueOf(str);
    } catch (NumberFormatException e) {
        //not an integer
    }
于 2013-02-19T16:11:19.297 回答
4

试试看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
    }
于 2015-02-23T09:59:39.647 回答
2

试试这个

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");
    }
}
于 2013-02-19T21:05:37.977 回答
1

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

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

如果包含有效的数字序列,该matches方法将返回,但当然输入可以远高于的容量。在这种情况下,您可以考虑切换到 a或 a类型。truenumStringIntegerlongBigInteger

于 2013-02-19T16:23:23.630 回答