我在java中有一小段代码,在代码运行时抛出以下错误
线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“10000000000” at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在java.lang.Integer.parseInt(Integer.java:495) 在java.lang.Integer.parseInt(Integer.java:527) 在hello.main(hello.java:6)
public class hello {
public static void main(String args[])
{
int x = 1024;
String h = Integer.toString(x, 2);
int xx = 9*(Integer.parseInt(h));
System.out.println(xx);
}
}
我怀疑这个问题与值/ parseInt的大小有关。你能详细解释一下这个错误的原因吗?
答案 0 :(得分:3)
这是因为它超过了整数2,147,483,647
的最大值答案 1 :(得分:2)
您将获得java.lang.NumberFormatException:对于输入字符串:" 10000000000"因为它超出了int的范围。
integer是带符号的32位类型,范围从-2,147,483,648到2,147,483,647。 long是带符号的64位类型,适用于int类型不足以保持所需值的情况,范围从-9,223,372,036,854,775,808到 9,223,372,036,854,775,807。这使得当需要大的整数时它很有用。
试试这行代码 -
long xx = 9*(Long.parseLong(h));
答案 2 :(得分:1)
您收到此错误是因为您尝试解析的值对于Integer类型而言太大。请尝试使用Long。