最幼稚的方式是遍历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;}
另外,你可以依靠Java库来实现。它不是基于异常的,并且将捕获几乎所有你能想到的错误条件。它会贵一些(你必须创建一个Scanner对象,该对象在严格的紧缩循环中是你不希望做的。但是通常情况下,它不应该太贵,所以每天 *** 作它应该是相当可靠的。
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();}
如果最佳实践对你来说并不重要,或者你想招揽进行代码审查的人员,请尝试以下 *** 作以获取大小:
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;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)