在java中将String格式化为Integer

时间:2014-05-29 11:22:03

标签: java numberformatexception

我面临以下问题:

与临时值相比,我将获得相似或更长的值:

 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)

3 个答案:

答案 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

我希望这些信息可以帮到你。