#java #android #biginteger
Что за Exception выкидывает? Вот участок кода на который ругается. 55 StringBuilder quotientStr = new StringBuilder(); 56 quotientStr.append(arrOfVar[2]);**//добавляем число из массива** 57 quotientStr.append(5); 58 int quotient = Integer.parseInt(quotientStr.toString()); Exception in thread "main" java.lang.NumberFormatException: For input string: "4090303030" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:495) at java.lang.Integer.parseInt(Integer.java:527) at TaskTwo.division.LongDivision.intermCalc(LongDivision.java:58)
Ответы
Ответ 1
Проблема в том, что вы вышли за границы максимальнно возможного значения содержимого переменной типа int, кое равняется 2147483647, т.е. 2млрд+. А у вас 4млрд+. Таким образом, например, вы не можете поместить всё население нашей планеты в переменную int. А вот население Китая вполне поместится в такой переменной. И программа такая будет работать исправно ровно до тех пор, пока Китай не присоединит к себе Индию. Только представьте: вы играете в к-л игру за Китай, развязываете n-мировую войну, побеждаете и присоединяете к себе Индию... А вместо сообщения "Поздравляем, теперь коммунистов в мире 2млрд+!" ваша игра вылетает на рабочий стол! Ибо в такой игре захватить Индию невозможно безнаказанно) Решение: Для таких больших чисел надо использовать класс BigInteger, передавая вашу строку в его конструктор: BigInteger quotient = new BigInteger(quotientStr.toString()); System.out.println(quotient); //в вашем случае без проблем выведет 4090303030
Комментариев нет:
Отправить комментарий