Java中的整数与字符串决策

4 java string integer

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

狗10 23猫青蛙22大象

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

猫10 22狗大象23青蛙

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

谢谢.

Gow*_*ham 6

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

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

请参阅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

  • 我不同意.例外情况很慢,但在您需要之前不要进行优化.我写了一个`isNumber`私有静态方法,并使用try/parseInt/catch块来实现它.如果它太慢,很容易换掉它. (4认同)