【发布时间】:2018-05-16 07:59:49
【问题描述】:
下面的代码throws NumberFormatException我不明白为什么,
String sku = "008949679851";
System.out.println(Integer.valueOf(sku));
有趣的是,如果我删除前三位数字并将输入字符串保留为“949679851”,则不会引发此异常。将字符串转换为整数值时是否有长度限制..?我怎样才能使它与完整的字符串一起工作..?
【问题讨论】:
-
除了要大的数字:还要记住,字面量中的 0 前缀意味着:八进制数字。因此,取决于您想要做什么(或者您期望该数字是什么,最好先删除那些 0)。
-
我一定会记住这一点 :)
-
valueOf(String)(没有可选的第二个 radix 参数)总是以 10 为基数(javadoc)进行解析,无论前导零如何。所以它并没有因为非八进制数字 8 和 9 而失败,只是这个数字对于Integer来说太大了。