【问题标题】:Java - White space with Integer.valueOf() causes java.lang.NumberFormatException [closed]Java - 带有 Integer.valueOf() 的空格导致 java.lang.NumberFormatException [关闭]
【发布时间】:2020-04-29 18:08:23
【问题描述】:

如果你尝试:

Integer.valueOf(" 00");

...抛出 java.lang.NumberFormatException。 所以,这很容易通过去除任何空白来解决,即使对于像我这样的 Java 菜鸟也是如此,但我非常感谢任何可以解释为什么 Integer.valueOf() 方法是这样设计的?

你不想让它忽略空白吗?毕竟,在从字符串中提取整数值的上下文中,不能认为空格是模棱两可的。如果我在这个选择上遗漏了一些东西,我相信解释会帮助我成长为一名编码员。谢谢!

【问题讨论】:

  • 因为空格只是一个字符。不是数字的字符。你也应该使用Integer.parseInt(String),它返回一个intInteger 是一种包装类型(通常比原始的 int 类型慢)。
  • 该方法的工作是将字符串解释为整数。空格不是数字符号。如果要扫描字符流中的整数值,还有其他类,如Scanner

标签: java type-conversion whitespace


【解决方案1】:

如果你查看 java 文档,Integer.valueOf(String) 会调用

return Integer.valueOf(parseInt(s, 10));

并再次根据 Java 文档获取 parseInt

字符串中的字符必须都是十进制数字,除了 第一个字符可能是 ASCII 减号 '-'('\u005Cu002D') 表示负值或 ASCII 加号 '+' ('\u005Cu002B') 表示正值。

空格违反上述规则,因此数字格式异常。

【讨论】:

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