2014-01-21 4 views
1

Я пытаюсь написать простую программу, которая будет генерировать случайным образом 3 целые числа, а затем поместить их в массив, а затем объединить их в единую последовательность целых чисел, но он выдает ошибкуКак объединить большие целые числа в Java?

вот код:

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" 
+12

Используйте 'BigInteger'? –

+0

Ваша попытка отличить большое значение, которое не может принять int, попробуйте использовать «BigInteger», как предложил @MoritzPetersen. – Salah

+0

i try int b = Integer.parseInt (Integer.toString (kol [0]) + Integer.toString (kol [1]) + Integer.toString (kol [2])); \t \t \t \t tesa = tesa.add (BigInteger.valueOf (b)); \t \t \t \t \t \t \t \t System.out.println (TESA); – user2557930

ответ

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...

+0

Я пробовал вышеуказанный код, по-прежнему то же самое исключение, может быть, даже у BigInteger есть предел? – user2557930

+0

Кажется, что я совершил ошибку в коде выше. Я исправлю это. Попробуй еще раз. @ user2557930 –

+0

Я сам исправил орфографию, это не проблема, вы можете попробовать ее скомпилировать самостоятельно, она дает такое же исключение – user2557930

6

Целочисленный диапазон недостаточно, чтобы иметь свои большие значения.

int MAX_VALUE = 2147483647 
int MIN_VALUE = -2147483648 

Таким образом, вместо использования java.math.BigInteger для того же

Смежные вопросы