【问题标题】:Integer.parseInt(string) is giving me number format exceptionInteger.parseInt(string) 给了我数字格式异常
【发布时间】:2013-09-03 17:24:49
【问题描述】:

为什么这段代码会抛出NumberFormatException

int a = Integer.parseInt("1111111111111111111111111111111111111111");

如何获取int 对应的String 的值?

【问题讨论】:

  • String(从角度看为int)超过了Integer.MAX_VALUE(即2^31)。
  • String 不是有效的int
  • int 的最大值为 2,147,483,647。您是否尝试解析二进制表示?如果你是,你有 40 位,所以它仍然不适合(int 只存储 32)。
  • 没有“该字符串的 int 值”。

标签: java


【解决方案1】:

您尝试解析的值远大于允许的最大 int 值(Integer.MAX_VALUE2147483647),因此会抛出 NumberFormatException。它也大于允许的最大 longLong.MAX_VALUE9223372036854775807L),因此您需要一个 BigInteger 来存储该值。

BigInteger veryBig = new BigInteger("1111111111111111111111111111111111111111");

来自BigInteger Javadocs

不可变的任意精度整数。

【讨论】:

    【解决方案2】:

    这是因为数字字符串对于 int 来说非常大。可能这需要 BigInteger

    【讨论】:

      【解决方案3】:

      该字符串没有整数值。这就是它抛出异常的原因。整数的最大值是 2147483647,而你的值显然超过了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多