Java 如何检查是否可以从字符串创建BigInteger
我有一个方法:Java 如何检查是否可以从字符串创建BigInteger,java,Java,我有一个方法: public BigInteger method(String param){ try{ return new BigInteger(param); }catch(NumberFormatException e){ LOG.error(e, e); } } 我想检查是否可以从那些字符串参数创建biginger,而不生成NumberFormatException 有什么办法可以这样做吗?基本上你有两种可能的方法: 您
public BigInteger method(String param){
try{
return new BigInteger(param);
}catch(NumberFormatException e){
LOG.error(e, e);
}
}
我想检查是否可以从那些字符串参数
创建biginger
,而不生成NumberFormatException
有什么办法可以这样做吗?基本上你有两种可能的方法:
中强制转换,尝试{}catch()
并捕获所有内容。。。这不是很好的表现,更像是一种懒惰的方法你可能会找到一些灵感:)我认为在这里抓住这个例外是非常好的
只是,这是愚蠢的。只需返回
null
或适当的BigInteger/默认值。(并适当使用返回值。)您可以从Apache Commons使用。它有isDigits()方法。您可以检查它是否匹配类似于^-?\s*\d+$
的内容,但只要尝试并捕获就可以了
使用异常会对性能造成影响,但影响非常非常小,因此,除非您处于一个紧密的循环中,在数以百万计的字符串中循环使用高百分比的无效字符串,否则请尝试捕获。无需记录错误,只需返回适合您的内容(我可以想象是
null
或biginger.ZERO
)不是NumberFormatException
?问题是在这种情况下不生成任何异常为什么不?当然,您可以尝试匹配类似于^-?\s*\d+$
的内容,但为什么不尝试捕获呢?为什么性能不太好?正如在StackOverflow上多次建立的那样,性能受到了影响,但不是很大。除非您处于一个紧密的循环中,处理数百万个包含高百分比无效字符串的字符串,否则您不会注意到。