java.lang.NumberFormatException выбрасывается для строки "008949679851" - PullRequest
0 голосов
/ 16 мая 2018

Следующий код throws NumberFormatException, и я не понимаю, почему,

String sku = "008949679851";
System.out.println(Integer.valueOf(sku));

Интересно, если я удалю первые три цифры и оставлю входную строку как "949679851", то это исключениене брошен.Существует ли ограничение длины при преобразовании строки в целочисленное значение?Как я могу заставить его работать с полной строкой ..?

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

В Java максимальное значение для int и Integers составляет 2 ^ 31-1 (2147483647), поэтому ваше число превышает это значение.

0 голосов
/ 16 мая 2018

Целочисленный размер Java составляет 32 бита (диапазон от -2 147 483 648 до + 2 147 483 647)."008949679851" слишком длинный, в то время как "949,679,851" находится в пределах диапазона.

0 голосов
/ 16 мая 2018

Поскольку максимальное значение целого числа равно Integer.MAX_VALUE = 2147483647, а ваш номер больше этого 8949679851. Вместо этого используйте Long.valueOf(sku) или BigInteger, например:

Long l = Long.valueOf(sku);//Max value equal to 9223372036854775807

BigInteger b = new BigInteger(sku);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...