如何在Java中连接大整数?

时间:2014-01-21 07:48:51

标签: java numberformatexception

我正在尝试编写一个简单的程序,它会随机生成3个整数,然后将它们放入数组中,然后将它们连接成一个整数序列,但它会抛出错误

这是代码:

int [] kol=new int[3];

for(int j=0;j<3;j++) {
    kol[j]=(int)Math.round(Math.random() * 89999) + 10000;              
    System.out.print(kol[j] +"\n" );                
}

String ma=kol[0]+","+kol[1]+","+kol[2]+";";
System.out.println(ma);

我也尝试过:

int b = Integer.parseInt(Integer.toString(kol[0]) + Integer.toString(kol[1]) +
    Integer.toString(kol[2]));
System.out.println(b);

但同样的错误:

Exception in thread "main" java.lang.NumberFormatException: For input 
at java.lang.NumberFormatException.forInputString(Unknown Source)
string: "715534907077099"

2 个答案:

答案 0 :(得分:6)

整数范围不足以获得较大的值。

int MAX_VALUE = 2147483647
int MIN_VALUE = -2147483648

因此,请将java.math.BigInteger用于相同的

答案 1 :(得分:0)

在java中,int类型是32位有符号值,其最大值为2147483647(2 ^ 31-1)。 显然,您的值“715534907077099”远大于Integer.MAX_VALUE。如果它仍然低于Long.MAX_VALUE,则int n = Long.parseLong(strValue)将起作用。

但如果您不想达到上限,请改用BigInteger

BigInteger bi = new BigInteger(Integer.toString(kol[0]) + Integer.toString(kol[1]) +
    Integer.toString  (kol[2]));
System.out.println(bi);

It seem that I need to upload a pic to prove my code, according to the comments...