我在java中有一小段代码,在运行代码时会抛出以下错误
线程“main”中的异常java.lang.NumberFormatException:对于java.lang.Integer.parseInt(Integer.java:495)中java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)的输入字符串:“10000000000” java.lang.Integer.parseInt(Integer.java:527)at 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的大小有关 . 你能详细解释一下这个错误的原因吗?
3 回答
您收到此错误是因为您尝试解析的值对于Integer类型而言太大 . 尝试使用Long代替 .
您将获得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 . 这使得当需要大的整数时它很有用 .
试试这行代码 -
这是因为它超过了整数2,147,483,647的最大值