【问题标题】:java.lang.NumberFormatException when trying to parse a regular valid integer尝试解析常规有效整数时出现 java.lang.NumberFormatException
【发布时间】:2015-12-10 13:58:39
【问题描述】:

这是怎么回事?

这是checkSum = "2367122119" 的值。我想将此数字解析为这样的整数值:

int ipAddressAsInt = Integer.parseInt(checkSum.trim());

因此,我得到以下异常:

java.lang.NumberFormatException: For input string: "2367122119"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.example.servlets.RDServlet.doPost(RDServlet.java:40)
    ...

另外,如果我尝试Long.parseLong(checkSum),也会发生同样的情况。

这怎么可能?

【问题讨论】:

  • 请展示一个简短但完整的程序来说明问题,包括当您使用Long.parseLong 时,请记住您显示的值对于@987654326 来说太大了@...
  • 会不会是你忘记把 ipAddressAsInt 的类型改成 long 而你投了?
  • @StefanBeike:在这种情况下它不会编译 - 你不能将 long 值分配给 int 变量。
  • 也许改标题? “尝试将大于 Integer.MAX_VALUE 的数字解析为 int 时出现 java.lang.NumberFormatException”
  • 好的,这是一个有效的问题,我接受了 anwser。但是为什么我会为此投反对票???我没有看到任何反对投票的理由?!虽然我不关心这个,但我想知道为什么人们会否决一个正常的问题?

标签: java numberformatexception


【解决方案1】:

int 的数字太大了:

@Test
public void testMaxInt() {
    System.out.println(Integer.MAX_VALUE);   

    System.out.println(Integer.MIN_VALUE);   

  }

2147483647

-2147483648

【讨论】:

  • 但是 OP 声称他们对Long.parseLong 得到了相同的结果。
  • 这也是我所期望的 - 这就是为什么我要求 OP 提供一个简短但完整的示例,该示例可能会失败。
【解决方案2】:

数字对于整数来说太大了。使用 Long 它肯定可以工作。试试这样:

  String checkSum = "2367122119";
  long ipAddressAsInt = Long.parseLong(checkSum.trim());
  System.out.println(ipAddressAsInt);

【讨论】:

    【解决方案3】:

    数字超过了 int 容器的大小。您可以使用 long,但也必须将变量声明为 long:

    long ipAddressAsInt = Long.parseLong(checkSum.trim());
    

    理论上这应该可行....

    【讨论】:

    • 感谢您的回答。但是,如果以这种方式解析 IP 地址,您真的不应该使用它,因为如果您尝试解析(例如)0.0.0.0 以及其他一些地址,则会出现问题。更多信息请看这里:stackoverflow.com/questions/1957637/…
    • 对于 IP 地址,数组似乎是合乎逻辑的选择,但它实际上归结为您想对数据做什么。例如,一个数组(如果您愿意,可以使用 byte 或 int 作为类型)将消除解析 0.0.0.0 的问题,但它不会像单个 primitave 值那样易于处理和使用。您发布的链接实际上以比我考虑的更好的方式做到这一点......
    猜你喜欢
    • 2018-03-06
    • 2023-03-17
    • 2012-06-20
    • 1970-01-01
    • 2011-02-16
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    相关资源
    最近更新 更多