Невозможно преобразовать строку в целое число в Java [дублировать
-
29-09-2019 - |
Вопрос
Этот вопрос уже имеет ответ здесь:
- Как преобразовать строку в int в Java? 42 ответа
Я написал функцию для преобразования строки в целое число
if ( data != null )
{
int theValue = Integer.parseInt( data.trim(), 16 );
return theValue;
}
else
return null;
У меня есть строка, которая составляет 6042076399, и это дало мне ошибки:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6042076399"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
Разве это не правильный способ преобразования строки в целое число?
Решение
Вот как я предпочитаю это делать:
Изменить (08.04.2015):
Как отмечено в комментарии ниже, это на самом деле лучше сделано так:
String numStr = "123";
int num = Integer.parseInt(numStr);
Другие советы
Ан Integer
Не могу удержать это значение. 6042076399 (413424640921 в десятичном) превышает 2147483647, максимальное целое число может удерживать.
Попробуйте использовать Long.parseLong
.
Это правильный метод, но ваше значение больше, чем максимальный размер int
.
Максимальный размер int
может удержаться 231 - 1, или 2 147 483 647. Ваша стоимость составляет 6 042 076 399. Вы должны посмотреть на хранение его как long
Если вы хотите примитивный тип. Максимальное значение длиной значительно больше - 263 - 1. Другой вариант может быть BigInteger
.
Эта строка больше, чем integer.max_value. Вы не можете проанализировать что -то, что выходит из диапазона целых чисел. (Я полагаю, они поднимаются до 2^31-1).
В дополнение к тому, на что ответили другие, если у вас есть цепочка более 8 шестнадцатеричных цифр (но до 16 шестнадцатеричных цифр), вы можете преобразовать его в долгое использование Long.parseLong()
вместо int используется Integer.parseInt()
.