parseInt vs isDigit

时间:2016-09-07 01:52:31

标签: java parseint

如果参数是0到255之间的整数的String表示(包括0和255),我需要我的代码返回true,否则返回false。

例如: 字符串" 0"," 1"," 2" ...." 254"," 255"是有效的。

填充字符串(例如" 00000000153")也有效。

isDigit显然也可以工作,但我想知道这是否更有利和/或这甚至可以与Padded Strings一起使用?

public static boolean isValidElement(String token) {
    int foo = Integer.parseInt("token");
    if(foo >= 0 && foo <= 255)
        return true;
    else 
        return false;
    }

4 个答案:

答案 0 :(得分:2)

isDigit不起作用,因为它需要一个字符作为输入,如果是0到9之间的数字,则返回true。[参考:isDigit javadoc]

因为在您的情况下,您需要测试从0到255的所有数字的字符串表示,因此您必须使用parseInt

此外,还通过捕获NumberFormatException检查传递的令牌是否为有效数字,如果它不是有效整数,则返回false。

public static boolean isValidElement(String token) {
    try{
        int foo = Integer.parseInt(token);
        if(foo >= 0 && foo <= 255)
            return true;
        else 
            return false;
    } catch (NumberFormatException ex) {
        return false;
    }
}

答案 1 :(得分:0)

您可以使用正则表达式:

return token.matches("1?\\d{1,2}|2[0-4]\\d|25[0-5]");

答案 2 :(得分:0)

因此,如果字符串不是有效数字,Integer.parseInt将抛出NumberFormatException,这只是要记住的事情。

我会使用commons-math3库中的NumberUtils.isDigit()来检查,然后使用Integer.valueOf这是一个有效的数字解析器。

if (NumberUtils.isDigit(token)) {
    int foo = Integer.valueOf(token);
    return (foo >=0 && foo <=255);
}

答案 3 :(得分:0)

如果无法进行转换,则

Integer.parseInt会抛出NumberFormatException。考虑到这一点,您可以使用此代码段。 不需要其他依赖项。

public static boolean isValidElement(String token) {
    try {
        int value = Integer.parseInt(token);
        return value >= 0 && value <= 255;
    } catch(NumberFormatException e) {
        return false;
    }
}