Что за 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)
Ответ
Проблема в том, что вы вышли за границы максимальнно возможного значения содержимого переменной типа int, кое равняется 2147483647, т.е. 2млрд+. А у вас 4млрд+
Таким образом, например, вы не можете поместить всё население нашей планеты в переменную int. А вот население Китая вполне поместится в такой переменной. И программа такая будет работать исправно ровно до тех пор, пока Китай не присоединит к себе Индию. Только представьте: вы играете в к-л игру за Китай, развязываете n-мировую войну, побеждаете и присоединяете к себе Индию... А вместо сообщения "Поздравляем, теперь коммунистов в мире 2млрд+!" ваша игра вылетает на рабочий стол! Ибо в такой игре захватить Индию невозможно безнаказанно)
Решение:
Для таких больших чисел надо использовать класс BigInteger, передавая вашу строку в его конструктор:
BigInteger quotient = new BigInteger(quotientStr.toString());
System.out.println(quotient);
//в вашем случае без проблем выведет 4090303030
Комментариев нет:
Отправить комментарий