parseInt выдает ошибку

У меня есть этот небольшой фрагмент кода в java, который выдает следующую ошибку при запуске кода

Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "10000000000" в java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) в java.lang.Integer.parseInt(Integer.java:495) в java.lang.Integer.parseInt(Integer.java:527) в hello.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);
    }
}

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


person stranger    schedule 30.09.2014    source источник
comment
используйте bigInteger .....   -  person Madhawa Priyashantha    schedule 30.09.2014


Ответы (3)


Вы получаете 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));
person Moni    schedule 30.09.2014

Это связано с тем, что это превышает максимальное значение для целого числа 2 147 483 647.

person PsyCode    schedule 30.09.2014

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

person ToxicPineapple    schedule 30.09.2014