我试图将String
转换为int
。但是,遇到错误会抛出NumberFormatException
。
java.lang.NumberFormatException: For input string: "07221255201"
代码:
int value = Integer.valueOf(itemData.get(row).ERP_Customer_Item.trim());
请告知。
答案 0 :(得分:3)
7221255201超出原始int
范围。您应该使用long
类型。
这应该可以正常工作:
long value = Long.parseLong(itemData.get(row).ERP_Customer_Item.trim());
对于其他上下文,尝试在编写代码时考虑保留原始类型范围。它就像是一个由不同大小的锤子组成的锤子组,并在上下文中使用适当的锤子。例如,如果您知道特定变量将始终在[-128,127]的范围内,则应使用short
而不是int
,因为在后一种情况下您会浪费大量的位。 / p>
答案 1 :(得分:1)
您的号码大于Integer.MAX_VALUE(2 ^ 31 - 1,或2147483647),因此无法将其解析为整数。
小心从字符串转换为数字。无论创建该数字是什么,都没有使用java ints。
在这种情况下,您可以使用Long.parseLong转换为long,或Long.valueOf获取Long(对象而不是主要),但为什么要从字符串转换?您丢失了信息(在这种情况下,前导零可能重要,也可能不重要,具体取决于您对数据的处理方式)。转换有一种方法可以在某个地方咬回来。