4

I have a method:

public BigInteger method(String param){
    try{
            return new BigInteger(param);
    }catch(NumberFormatException e){
        LOG.error(e, e);
    }
}

I want to check if I can create a BigInteger from those String param without generating NumberFormatException.

Is there any way do it this way?

4

4 回答 4

3

您可以使用来自 Apache Commons 的NumberUtils 。它有 isDigits() 方法。

于 2013-11-08T07:58:20.703 回答
2

基本上你有两种可能的方法:

  1. 您检查字符串是否仅包含数字,并且不超过 Bigint 中的数字

  2. 投入 atry{}catch()并抓住一切......这不是很高效,而且是一种懒惰的方法!

在这里你可能会找到一些灵感:)

于 2013-11-08T07:51:58.503 回答
1

你可以检查它是否匹配类似的东西^-?\s*\d+$,但只是尝试和捕捉实际上很好。

使用异常影响性能,但它非常非常小,所以除非你处于一个紧密的循环中,循环数百万个包含大量无效字符串的字符串,否则只需尝试并捕获即可。
无需记录错误,只需返回适合您的任何内容(null或者BigInteger.ZERO,我想)。

于 2013-11-08T09:57:42.483 回答
0

我认为在这里捕获异常是非常好的。

只是,记录它是愚蠢的。只需返回null或适当的 BigInteger sentinel /default 值。(并适当地使用返回值。)

于 2013-11-08T07:54:35.193 回答