【问题标题】:Java NumberFormatException pops up for 101836849?Java NumberFormatException 弹出 101836849?
【发布时间】:2016-01-08 13:10:55
【问题描述】:

为什么我要转换为整数的整数字符串会发生这种情况?

Exception in thread "main" java.lang.NumberFormatException: For input string: "101836849"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)

【问题讨论】:

  • 你能展示你的代码吗?
  • 你使用的是 parseInt(String s, int radix) 方法吗?
  • 同时检查控制字符
  • 如果你想从整数转换为字符串,你不需要任何解析!
  • 请起草完整的问题。

标签: java exception integer


【解决方案1】:

您的号码字符串 "101836849" 在索引 0 处包含字符 (零宽度无间隔)。此字符被 Integer.parseInt 拒绝。

通过打印字符串 chars 来验证这一点:

for (int i=0; i<s.length(); i++)
    System.out.println((int)s.charAt(i));

【讨论】:

  • 我可以用默认基数 10 解析它。
  • @Terje 您需要将 OP 堆栈跟踪中的确切字符串(包括引号)复制到您的编辑器中,以便拥有这个不可见的字符。甚至 Eclipse 也不显示它,但它就在那里。
  • 对,IDEA 正在展示它。我之前没有包含引号。
  • 是的,你是对的,这个字符似乎在我的字符串中。
  • @wero 这是怎么来的?
猜你喜欢
  • 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
相关资源
最近更新 更多