我正在开发一个程序,其中用户输入是一个混合字符串和整数的数组。例如:
狗10 23猫青蛙22大象我应该在不改变每个索引的类型的情况下对这个数组进行排序。所以输出将是;
猫10 22狗大象23青蛙从控制台读取行后,我正在使用字符串标记生成器来遍历每个元素。之后,我正在尝试parseInt,如果它抛出异常,我假设它是一个字符串,否则它是一个整数。有没有更好的方法来确定令牌是否是数字?
谢谢。
答案 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.html和http://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
缺点是您必须包含库。