Невозможно преобразовать строку в целое число в Java [дублировать

StackOverflow https://stackoverflow.com/questions/3517686

  •  29-09-2019
  •  | 
  •  

Вопрос

Этот вопрос уже имеет ответ здесь:

Я написал функцию для преобразования строки в целое число

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top