将 String 转换为 int return NumberFormatException
convert String to int return NumberFormatException
i 来自 API 我收到下一个字符串:
String userId = "4463570100035744";
我需要将它转换为 int,所以我尝试了下一个代码:
try {
int id = Integer.parseInt(userId);
} catch (NumberFormatException e){
e.printStackTrace();
}
但我仍然遇到异常....
可能是什么原因?
原因:值超出了 int 的范围
操作:您必须使用 Long 而不是 Integer。请改用 long/Long。
Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648
Long.MAX_VALUE = 9223372036854775807
Long.MIN_VALUE = -9223372036854775808
你将变量 userId
作为字符串,然后将整数值放入其中,然后解析它以转换为整数。您的错误是您将整数值放入字符串变量 userId
.
你需要这样写:
String userId = "4463570100035744";
还有一点要记住变量的大小。我认为值太大了 int
.
现在你编辑了你的问题,在人们 post 回答了你的实际问题之后。
4463570100035744 对于 Int32 变量来说太大了。您可以考虑使用 long
变量类型。
您可以参考 Java 基本类型的文档以 select 适合您变量的类型:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
可用于存储像您的 userId 这样的数字的原始类型是:
byte
(1 字节)
范围:-128 到 127
short
(2 个字节)
范围:-32768 到 32767
int
(4 个字节)
范围:−2,147,483,648 到 2,147,483,647
float
(4 个字节)
范围:3.4e−038 到 3.4e+038
long
(8 个字节)
范围:9,223,372,036,854,775,808 到 9,223,372,036,854,755,807
double
(8 个字节)
范围:1.7e−308 到 1.7e+038
注意你的整数是 4463570100035744
与 int
相比有 4,463,567,952,552,097 的差异。
您的 id 变量最适合 long
。
try
{
long id = Long.parseLong(userId);
System.out.println("long id = " + id);
}
catch (NumberFormatException nfe)
{
System.out.println("NumberFormatException: " + nfe.getMessage());
}
i 来自 API 我收到下一个字符串:
String userId = "4463570100035744";
我需要将它转换为 int,所以我尝试了下一个代码:
try {
int id = Integer.parseInt(userId);
} catch (NumberFormatException e){
e.printStackTrace();
}
但我仍然遇到异常....
可能是什么原因?
原因:值超出了 int 的范围
操作:您必须使用 Long 而不是 Integer。请改用 long/Long。
Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648
Long.MAX_VALUE = 9223372036854775807
Long.MIN_VALUE = -9223372036854775808
你将变量 userId
作为字符串,然后将整数值放入其中,然后解析它以转换为整数。您的错误是您将整数值放入字符串变量 userId
.
你需要这样写:
String userId = "4463570100035744";
还有一点要记住变量的大小。我认为值太大了 int
.
现在你编辑了你的问题,在人们 post 回答了你的实际问题之后。
4463570100035744 对于 Int32 变量来说太大了。您可以考虑使用 long
变量类型。
您可以参考 Java 基本类型的文档以 select 适合您变量的类型:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
可用于存储像您的 userId 这样的数字的原始类型是:
byte
(1 字节)
范围:-128 到 127short
(2 个字节)
范围:-32768 到 32767int
(4 个字节)
范围:−2,147,483,648 到 2,147,483,647float
(4 个字节)
范围:3.4e−038 到 3.4e+038long
(8 个字节)
范围:9,223,372,036,854,775,808 到 9,223,372,036,854,755,807double
(8 个字节)
范围:1.7e−308 到 1.7e+038
注意你的整数是 4463570100035744
与 int
相比有 4,463,567,952,552,097 的差异。
您的 id 变量最适合 long
。
try
{
long id = Long.parseLong(userId);
System.out.println("long id = " + id);
}
catch (NumberFormatException nfe)
{
System.out.println("NumberFormatException: " + nfe.getMessage());
}