2016-09-07 61 views
1

如果参数是0到255(包括0和255)之间的整数的字符串表示形式,则需要我的代码返回true,否则返回false。parseInt vs isDigit

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

填充字符串(例如“00000000153”)也是有效的。

isDigit显然也会工作,但我想知道这是否会更有益,和/或这将甚至与填充字符串一起工作?

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

您的代码无效? – passion

+2

JavaScript和Java是两种完全不同的语言。 –

回答

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; 
    } 
} 
+0

“catch(NumberFormatException ex)”中的catch和ex是什么意思?你为什么打开试试? –

+0

'try'和'catch'是Java关键字。如果提供的输入不能被解析为整数(例如'Integer.parseInt(“randomText”)''),'parseInt'将会抛出'NumberFormatException'。 'try-catch'是一种语法,用于捕获该异常并执行正确的操作,即返回'false',因为输入不是有效的元素(不是0到255之间的数字表示)。你可以在[java官方教程](https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html)中阅读更多关于try-catch的内容。 –

0

你可以使用正则表达式:

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

那么的Integer.parseInt将抛出NumberFormatException如果该字符串不是一个有效的数字,只是要记住。

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

if (NumberUtils.isDigit(token)) { 
    int foo = Integer.valueOf(token); 
    return (foo >=0 && foo <=255); 
} 
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; 
    } 
}