2014-09-30 3 views
0

У меня есть этот маленький кусочек кода в Java, который выдает следующее сообщение об ошибке при выполнении кодаParseInt бросает ошибку

Исключения в потоке «основной» java.lang.NumberFormatException: Для ввода строки: «10000000000» в java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) at java.lang.Integer.parseInt (Integer.java:495) at java.lang.Integer.parseInt (Integer.java:527) по-привет. main (hello.java:6)

public class hello { 
    public static void main(String args[]) 
    { 
     int x = 1024; 
     String h = Integer.toString(x, 2); 
     int xx = 9*(Integer.parseInt(h)); 
     System.out.println(xx); 
    } 
} 

Я подозреваю, что эта проблема есть r приурочен к размеру значений/parseInt. Не могли бы вы объяснить причину этой ошибки для меня подробно.

+0

использование BigInteger ..... –

ответ

2

Вы получаете java.lang.NumberFormatException: для строки ввода: «10000000000», потому что она превышает диапазон int.

integer - это подписанный 32-разрядный тип, который имеет диапазон от -2,147,483,648 до 2,147,483,647. long - это подписанный 64-битный тип и полезен для тех случаев, когда тип int не достаточно велик, чтобы сохранить желаемое значение, диапазон от -9,223,372,036,854,775,808 до 9, 223,372,036,854,775,807. Это делает его полезным, когда нужны большие, целые числа.

Попробуйте эту линию код-

long xx = 9*(Long.parseLong(h)); 
3

Это потому, что это превосходит максимальное значение для целого числа 2147483647

1

Вы получаете эту ошибку, потому что вы пытаетесь разобрать значение слишком большое для типа Integer. Попробуйте вместо этого использовать Long.

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