Почему это происходит? Строка, которую я разбираю, явно похожа на int. Программа читает из файла, и я знаю, что она работает больше всего, потому что этот номер далеко в конце списка. Любые идеи? Кроме того, программа анализирует целые числа, превышающие 2,2 миллиарда, поэтому я не знаю, проблема ли это в размере.
Исключение в потоке main java.lang.NumberFormatException: для входной строки: 3291105000
Ответы (4)
32-битный int
со знаком может иметь размер не более 2^31 или 0x7FFFFFFFF (2 147 483 647). Вам нужно будет использовать больший тип данных. long
добавит вам 2^63. Или класс BigInteger даст вам произвольный целое число.
unsigned int
:(
- person tskuzzy; 12.06.2012
int
может иметь минимальное значение -2,147,483,648
и максимальное значение 2,147,483,647
(включительно). Ваш номер (из строки) выходит за пределы диапазона
Используйте long
вместо Long.parseLong(3291105000)
вам подойдет
Используйте long
, который может содержать 64-битные целые числа.
int
s может содержать только целые числа до ~ 2 миллиардовlong
s может содержать целые числа до ~ 9e18
Как говорили другие, число явно выходит за пределы диапазона int, и, следовательно, вы получаете исключение.
4 байта со знаком (дополнение до двух). -2 147 483 648 до 2 147 483 647. Как и все числовые типы, целые числа могут быть преобразованы в другие числовые типы (byte, short, long, float, double). Когда выполняются приведения с потерями (например, int в byte), преобразование выполняется по модулю длины меньшего типа.