Почему при попытке разобрать это значение возникает NumberFormatException? - PullRequest
2 голосов
/ 12 февраля 2010

Код

String myVar = "1255763710960";
int myTempVar=0;
try
{ 
   myTempVar = Integer.valueOf(myVar);
}
catch (NumberFormatException nfe)
{
    System.out.println(nfe.toString());
}

выход

java.lang.NumberFormatException: 
For input string: "1255763710960"

Я понятия не имею, почему это так.

Ответы [ 4 ]

9 голосов
/ 12 февраля 2010

Значение, которое вы пытаетесь сохранить, слишком велико, чтобы поместиться в целое число. Максимальное значение для целого числа составляет 2 31 -1 или около 2 миллиардов. Это число превышает это на несколько порядков.

Попробуйте использовать Long и parseLong() вместо.

4 голосов
/ 12 февраля 2010

Максимальное значение Java Integer: 2 ^ 31-1 = 2147483647

Вы должны использовать Long.valueof ()

3 голосов
/ 12 февраля 2010

Ваше строковое представление слишком велико (> Integer.MAX_VALUE) для разбора на int. Вместо этого попробуйте длинный.

2 голосов
/ 12 февраля 2010

1255763710960 больше, чем Integer.MAX_VALUE, что равно 2147483647, так что значение не помещается в int.

Вам потребуется использовать long и Long.valueOf() (или еще лучше Long.parseLong(), чтобы избежать ненужной автоматической распаковки) для анализа этого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...