Java中的整数与字符串决策

时间:2012-04-07 07:27:52

标签: java string integer

我正在开发一个程序,其中用户输入是一个混合字符串和整数的数组。例如:

狗10 23猫青蛙22大象

我应该在不改变每个索引的类型的情况下对这个数组进行排序。所以输出将是;

猫10 22狗大象23青蛙

从控制台读取行后,我正在使用字符串标记生成器来遍历每个元素。之后,我正在尝试parseInt,如果它抛出异常,我假设它是一个字符串,否则它是一个整数。有没有更好的方法来确定令牌是否是数字?

谢谢。

3 个答案:

答案 0 :(得分:6)

依赖程序逻辑的异常被认为是不好的做法,因为异常很慢。相反,您可以使用正则表达式。

Matcher numericalMatcher = Pattern.compile("^-?\\d+$").matcher(token);
if( numericalMatcher.matches() ) {
   // Token is a number
} else {
   // Token is not a number
}

请参阅http://docs.oracle.com/javase/1.6.0/docs/api/java/util/regex/Pattern.htmlhttp://docs.oracle.com/javase/1.6.0/docs/api/java/util/regex/Matcher.html

答案 1 :(得分:3)

使用parseInt并不是一个坏主意。

另外,您可以使用正则表达式,但我相信您的选择更实用,更简单。

答案 2 :(得分:0)

例如,您可以使用'StringUtils.isNumeric'来检测字符串是否为数字

http://commons.apache.org/lang/api-2.3/org/apache/commons/lang/StringUtils.html

缺点是您必须包含库。