获取有关输入类型的信息(主要参数)

时间:2014-03-26 12:43:08

标签: java casting

如何获取有关输入类型的信息? main中的String []数组只接受字符串。如果有人在args中输入一个数字,我怎么能知道它是否是用字符串变量写的数字? 示例代码非常有用。 (对不起,如果我问的是愚蠢的问题)

5 个答案:

答案 0 :(得分:3)

args[]接受提供给main方法的所有参数,所以args[0]虽然是一个String,但是如果你希望用户输入一个Integer,你可以使用它...

Integer.parseInt(args[0]);

考虑到这一事实虽然它可能通过java.lang.NumberFormatException,但您必须检查以防用户输入无效输入。如果你想根据这是真正的数字做一些事情,那么看看Apache Commons Lang中的StringUtils.isNumeric,为什么要重新发明轮子?

我之所以这样做而不是try{} catch()是因为异常应该用于特殊情况。

答案 1 :(得分:2)

您的参数的类型始终只是String。如果该字符串是“”,则“Foo”或“182”此时完全是任意的。

这些字符串可能是或可能不是数字的有效表示。您需要将字符串转换为Integer.parseInt的数字类型(例如int)。

答案 2 :(得分:2)

您可以使用此代码。此代码将首先检查输入的输入是否为数字。如果它是数字,它将解析为num,否则它将为您提供默认值。

public static void main(String args[]) {
    char chararr[] = args[0].toCharArray();
    int num = 0 ;
    boolean isNumber = false;
    for (int i = 0; i < chararr.length;i++) {
        if (Character.isDigit(chararr[i])) {
            isNumber = true;
        }
        else {
            isNumber = false;
            break;
        }

    }
    System.out.println("str is number "+isNumber);
    if (isNumber) {
         num = Integer.parseInt(args[0]);
    }
    System.out.println("number is "+num);
}

答案 3 :(得分:0)

最简单的方法是使用parseInt进行检查。

public static void main(String[] args) throws InterruptedException
{
    try
    {
        Integer.parseInt(args[0]);
    }
    catch(NumberFormatException e)
    {
        System.out.println("It is not a number.");
    }
}

答案 4 :(得分:0)

你不能&#34;知道&#34;类型为String的值。您可以尝试检查String是否可以转换为其他类型。即使它可以,但并不意味着,String值意味着属于那种类型。这是一个例子:

int value = Integer.parseInt("4711");

此声明会产生Integer,其值为4711,但这并不意味着,String应该是一个经过编码的Integer