2013-03-14 7 views
0

Таким образом, в Java У меня есть большое количество в аргумент команды, скажем, 12345678910, и я не могу использовать BigInteger, и я уже сделал:Преобразование массива строк в большой массив чисел

String[] g = args[1].split(""); 

Итак, моя строка помещается в строковый массив. Но, я не могу использовать:

int[] ginormintOne = new int[g.length]; 
    for(int n = 0; n < g.length; n++) { 
     ginormintOne[n] = Integer.parseInt(g[n]); 
    } 

Это дает мне это:

Exception in thread "main" java.lang.NumberFormatException: For input string: "" 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at Ginormint.main(Ginormint.java:67) 

Я думаю, что мои цифры слишком велики для междунар. Любая идея о том, как преобразовать его в массив большого числа?

+0

какой-либо причине не использовать 'java.lang.Long'? это 64-разрядная подпись – amphibient

+0

Предположим, что кто-то ставит произвольно большое число, занимая более 64 бит. Как я могу это сделать? – 2013-03-14 19:41:56

+0

BigDecimal * 10^x (научная нотация) – amphibient

ответ

0

Первый элемент массива из args[1].split("") пустая строка, на мой взгляд вызывает исключение java.lang.NumberFormatException, так как он не может быть превращена в Integer

0

Использовать Long.parseLong вместо Integer.parseInt и long[] вместо Long.parseLong.

Но при этом NumberFormatException указывает на отказ, потому что вы передаете ему пустую строку. Вы уверены, что правильно разделяете строку или что разделение даже необходимо? Массив args в main уже разделен на пробелы, предполагая, что это происходит от args.

5

Вы раскалываете пустую строку. Например,

"123 456".split("") 

результаты в этом массиве:

["" "1" "2" "3" " " "4" "5" "6"] 

Это где ваше исключение приходит.

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

  • Нет связанных вопросов^_^