如果String包含的数字大于Integer.MAX_VALUE

aks*_*she 2 java string int

我想找到给定的字符串"99999999999999999999999999"或任何不适合任何数据类型的大量数字.我想查找该数字是否大于Integer.MAX_VALUE

Mic*_*ael 9

使用 BigInteger

BigInteger maxInt = BigInteger.valueOf(Integer.MAX_VALUE);
BigInteger value = new BigInteger("whatever");

if (value.compareTo(maxInt) > 0)
{
    // larger
}
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 5

你可以构造一个BigInteger从字符串对象,然后比较BigIntegerInteger.MAX_VALUE.


Era*_*ran 5

你可以调用parseInt和catch NumberFormatException,如果数字太大就会抛出(尽管如果它String有非数字字符也会被抛出).

如果要避免该异常,可以运行以下检查:

  • 如果String超过10个字符(如果第一个字符是' - '或'+',则为11个字符),它必须大于Integer.MAX_VALUE或小于Integer.MIN_VALUE.
  • 否则,调用Long.parseLong()并比较结果Integer.MAX_VALUE.