确定一个String是否是Java中的整数

问题:

我正在尝试确定字符串数组中的特定项是否为整数。
我是.split(" ")'ing String形式的中缀表达式,然后尝试将结果数组拆分成两个数组;一个用于整数,一个用于操作员,同时丢弃括号和其他杂项。什么是最好的方式来完成这个?
我以为我可以找到一个Integer.isInteger(String arg)的方法或东西,但没有这样的运气。

回答:

最简单的方法是遍历String并确保所有元素都是给定基数的有效数字。这可能是有效的,因为您必须至少查看一个元素。我想我们可以根据基数进行微观优化,但是对于所有意图和目的来说,这与您期望的一样好。

public static boolean isInteger(String s) {
return isInteger(s,10);
}

public static boolean isInteger(String s, int radix) {
if(s.isEmpty()) return false;
for(int i = 0; i < s.length(); i++) { if(i == 0 && s.charAt(i) == '-') { if(s.length() == 1) return false; else continue; } if(Character.digit(s.charAt(i),radix) < 0) return false; } return true; } [/code] 或者,您可以依靠Java库来实现此目的。这不是基于异常的,并且将捕捉到您可以想到的每个错误条件。这将会更贵一些(你必须创建一个Scanner对象,这在一个严格的紧密循环中你不想做,但一般不应该太贵了,所以在日常生活中操作应该是相当可靠的。 [code lang="python"] public static boolean isInteger(String s, int radix) { Scanner sc = new Scanner(s.trim()); if(!sc.hasNextInt(radix)) return false; // we know it starts with a valid int, now make sure // there's nothing left! sc.nextInt(radix); return !sc.hasNext(); } [/code] 如果最佳做法对您无关紧要,或者您想要拖曳您做代码评估的人,请尝试此尺寸: [code lang="python"] public static boolean isInteger(String s) { try { Integer.parseInt(s); } catch(NumberFormatException e) { return false; } catch(NullPointerException e) { return false; } // only got here if we didn't return false return true; } [/code]     Code问答: http://codewenda.com/topics/python/
Stackoverflow: Determine if a String is an Integer in Java

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

32 − = 31