java.lang.NumberFormatException:对于输入字符串:“9646324351”
java.lang.NumberFormatException: For input string: "9646324351"
public int reverse(int x) {
String xString=String.valueOf(Math.abs(x));
StringBuffer reverseX=new StringBuffer (xString);
if (x>=Integer.MIN_VALUE & x<=Integer.MAX_VALUE) {
reverseX=reverseX.reverse();
if (x<0)
reverseX=reverseX.insert(0,"-");
return Integer.parseInt(reverseX.toString());
}
else
return 0;
}
运行时错误消息:
Line 12: java.lang.NumberFormatException: For input string:
"9646324351"
最后执行的输入:
1534236469
怎么了?请帮助 Orz!!!
该数字太大,无法解析为整数,它超过了 Integer.MAX_VALUE
。
宁愿使用Long.parseLong
使用双整数 class 而不是整数
阅读文档 https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
如果您尝试使用以下值调用您的方法:
reverse(9646324351);
您遇到编译器错误,导致您遇到问题:
The literal 9646324351 of type int is out of range
所以我不明白为什么你的方法会出错。
在您的程序中使用 long/Long 或 BigInterger
Here 您可以了解数据类型及其涵盖的范围
public long reverse(int x) {
String xString=String.valueOf(Math.abs(x));
StringBuffer reverseX=new StringBuffer (xString);
if (x>=Integer.MIN_VALUE & x<=Integer.MAX_VALUE) {
reverseX=reverseX.reverse();
if (x<0)
reverseX=reverseX.insert(0,"-");
return Long.parseLong(reverseX.toString());
}
else
return 0L;
}
你可以试试上面的代码。
因为这个 9646324351
值超出了 int 的范围 type.You 需要为这个字符串到数字的转换提供更大的数据类型。
据我们所知
double's range > long's range >int's range
你也可以试试BigInteger
希望对您有所帮助。
public int reverse(int x) {
String xString=String.valueOf(Math.abs(x));
StringBuffer reverseX=new StringBuffer (xString);
if (x>=Integer.MIN_VALUE & x<=Integer.MAX_VALUE) {
reverseX=reverseX.reverse();
if (x<0)
reverseX=reverseX.insert(0,"-");
return Integer.parseInt(reverseX.toString());
}
else
return 0;
}
运行时错误消息:
Line 12: java.lang.NumberFormatException: For input string: "9646324351"
最后执行的输入:
1534236469
怎么了?请帮助 Orz!!!
该数字太大,无法解析为整数,它超过了 Integer.MAX_VALUE
。
宁愿使用Long.parseLong
使用双整数 class 而不是整数 阅读文档 https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
如果您尝试使用以下值调用您的方法:
reverse(9646324351);
您遇到编译器错误,导致您遇到问题:
The literal 9646324351 of type int is out of range
所以我不明白为什么你的方法会出错。
在您的程序中使用 long/Long 或 BigInterger
Here 您可以了解数据类型及其涵盖的范围
public long reverse(int x) {
String xString=String.valueOf(Math.abs(x));
StringBuffer reverseX=new StringBuffer (xString);
if (x>=Integer.MIN_VALUE & x<=Integer.MAX_VALUE) {
reverseX=reverseX.reverse();
if (x<0)
reverseX=reverseX.insert(0,"-");
return Long.parseLong(reverseX.toString());
}
else
return 0L;
}
你可以试试上面的代码。
因为这个 9646324351
值超出了 int 的范围 type.You 需要为这个字符串到数字的转换提供更大的数据类型。
据我们所知
double's range > long's range >int's range
你也可以试试BigInteger
希望对您有所帮助。