2010-02-12 2 views
2

Код:Почему попытка проанализировать это значение приводит к исключению NumberFormatException?

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" 

Я совершенно не знаю, почему это.

ответ

9

Значение, которое вы пытаетесь сохранить, слишком велико, чтобы соответствовать целому числу. maximum value for an Integer is 2 -1, или около 2 миллиардов. Это число превышает это на несколько порядков.

Try используя Long и parseLong() вместо этого.

+0

А, это намного больше смысла. Спасибо за это, Джон! :) – Federer

4
значение Maximun

Java Integer является 2^31-1 = 2147483647

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

+0

в дополнение к изменению объявления типа myTempVar –

2

1255763710960 более Integer.MAX_VALUE который 2147483647, так что значение не укладывается в int.

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

3

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

Смежные вопросы