我面临以下问题:
与临时值相比,我将获得相似或更长的值:
public class NumberFormat {
public static void main(String arg[]){
Integer numValue = null;
String temp="5474151538110135";
numValue=Integer
.parseInt(temp.trim());
System.out.println("--> "+numValue);
}
}
请提供解决方案。
Exception in thread "main" java.lang.NumberFormatException: For input string: "5474151538110135"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:60)
at java.lang.Integer.parseInt(Integer.java:473)
at java.lang.Integer.parseInt(Integer.java:511)
at com.filetransfer.August.NumberFormat.main(NumberFormat.java:10)
答案 0 :(得分:5)
5474151538110135
大于Integer.MAX_VALUE
。如果输入数字可能会显着增长,请使用Long.parseLong
代替BigInteger
Long numValue = Long.parseLong(temp.trim());
答案 1 :(得分:0)
可能是因为该值大于max int值2147483647。
System.out.println(Integer.MAX_VALUE);
您应该将其解析为Long,其最大值为9223372036854775807.。
System.out.println(Long.MAX_VALUE);
像这样
Long numValue = null;
String temp="5474151538110135";
numValue=Long
.parseLong(temp.trim());
答案 2 :(得分:0)
我建议使用BigInteger来避免错误
BigInteger Class的优势
Integer是原始类型int的包装器。包装类基本上用于你想要将原语作为对象进行处理的情况,以便在一个只需要一种类型的方法中传递一个int值。在这种情况下,您可能希望在包装器Integer中包装原始int值,该类型为Object类型。要了解Integer的具体优点,我建议您查看Sun提供的Integer api。
现在进入BigInteger,您将在计算中使用它来处理非常大的数字.BigIntegers的使用在安全性中,通常用于键规范。有关BigIntegers的更多信息,请查看以下链接http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
我希望这些信息可以帮到你。