【问题标题】:Java Number Format Exception for Input Strings with Only Digits [duplicate]仅包含数字的输入字符串的 Java 数字格式异常 [重复]
【发布时间】:2020-02-25 10:46:29
【问题描述】:

java.lang.NumberFormatException 上的许多线程已经存在于 StackOverflow 上。但是,他们似乎都没有回答我的问题。

我想将以下字符串转换为整数:idString = "10104102103"。我尝试了以下两种方法将其转换为整数

int id = Integer.parseInt(idString);
Integer id = Integer.valueOf(idString);

当执行其中任何一个时,我收到以下错误:

java.util.concurrent.ExecutionException: java.lang.NumberFormatException: For input string: "10104102103".

在其他线程中,提到了空格、NaN、非数字字符等作为可能发生此错误的原因。但是,这里没有这些案例。

我现在的问题是:

  • 是什么导致了这个错误?
  • 如何让它工作?

【问题讨论】:

  • 10104102103 对于 int 来说太大了。请改用long

标签: java string integer


【解决方案1】:

导致错误的原因是您尝试解析的数字10104102103 大于maximum possible value for an int2147483647

它在long 的范围内,因此您可以使用:

long id = Long.parseLong(idString);

但是,如果您的数字即使对于 long 而言也太大了,那么您就只能使用任意比例的整数,正如 here 所回答的那样。

【讨论】:

  • 感谢您的回复!我改了,但很快发现 Long 也不够用。我的问题理所当然地被标记为重复,并且引用的线程确实回答了这个问题。不过,感谢您的建议。
猜你喜欢
  • 2018-09-23
  • 2013-06-10
  • 2022-01-08
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多