Консольное приложение №1. Первая проектная работа.#1
Консольное приложение №1. Первая проектная работа.#1PhilipMaslov1 wants to merge 3 commits intomainfrom
Conversation
src/main/java/Main.java
Outdated
| System.out.println("Hello world!"); | ||
|
|
||
| int numberOfPerson; // Количество участников. | ||
| Scanner scanner = new Scanner(System.in); |
There was a problem hiding this comment.
Чтобы сканнер не расходовал ресурсы системы, важно закрывать его в конце использования, чтобы не допускать утечек памяти. Используй метод close()
There was a problem hiding this comment.
Работу с консолью вынес в отдельный класс - ConsoleReader. Туда же добавил метод закрытия сканера, который вызывается по завершении main.
src/main/java/Formatter.java
Outdated
|
|
||
| // Если сумма не может быть разделена поровну, считаем сколько должен заплатить каждый участник в максимально равных долях. | ||
| if (remOfDivision == 0) | ||
| System.out.printf("Счёт можно разделить поровну.\nКаждый должен заплатить по %.2f %s", sumPerPerson, Formatter.endOfRoubles(sumPerPerson)); |
There was a problem hiding this comment.
В конце финальной фразы рекомендую добавить перевод строки, чтобы вывод программы не прилип к следующему за ним системному промпту
| @@ -0,0 +1,33 @@ | |||
| import java.util.Scanner; | |||
|
|
|||
| public class Calculator { | |||
There was a problem hiding this comment.
Думаю, что данный класс можно расширить и включить в него методы и поля, которые сейчас находятся в Main, а конкретные математические операции вынести в отдельный класс Calculator. Этот тогда лучше будет переименовать, например, в SplitBill, BillSplitter или нечто подобное, отражающее его цель
There was a problem hiding this comment.
Внёс изменения. Создал класс Bill, описывающий счёт и его основные параметры
;
Работу со считыванием данных вынес в класс ConsoleReader;
По твоему совету мат. операции перенс в класс Calculator;
src/main/java/Calculator.java
Outdated
|
|
||
| // Метод, уточняющий стоимость товара | ||
| public static void askGoodPrice (Good good, Scanner scanner) { | ||
| System.out.println("Введите стоимость в формате \"руб.коп\":"); |
There was a problem hiding this comment.
Круто, что подсказываешь пользователю, в каком формате вводить данные!
src/main/java/Calculator.java
Outdated
| scanner.next(); | ||
| System.out.println("Стоимость нужно ввести в формате \"руб.коп\":"); | ||
| } | ||
| good.price = Math.round(scanner.nextDouble() * 100) / 100d; |
There was a problem hiding this comment.
Вот здесь может произойти переполнение, о котором я писала в комментарии к проекту. Почитать о переполнении в java можно тут https://www.baeldung.com/java-overflow-underflow
There was a problem hiding this comment.
Прочитал про переполнение. Подскажи, пожалуйста, нужно ли добавить к операциям проверки на переполнение? Условиями успешности задачи это не предусмотрено, а чтобы корректно добавить их в код, мне нужно доплонительное время, чтобы исследовать работу с ними.
There was a problem hiding this comment.
Обсудили с твоим наставником, что все-таки для зачета данного проекта нет необходимости обрабатывать переполнение. Так что проверю проект без учета этого замечания)
Учел, за исключением одного, все комментарии из #1 ToDo: нужно добавить обработку переполнений при считывании числовых значений и выполнении математических операций.
Изменения: - учтены замечания PR #1; - исправлена ошибка с возможностью ввести сумму товара < 0.00; - исправлнеа ошибка на ввод суммы товара в виде очень маленьких значений (0.0001); - исправил ошибку с неверным окончанием слова "рубль." для некоторых сумм. ToDo: нужно добавить обработку переполнений при считывании числовых значений и выполнении математических операций. С ревьюером и настаником согласовано влитие без учёта этого требования.
|
@kgornostaeva внёс множество правок, поправил ошибки и постарался учесть твои комментарии. Посмотри, пожалуйста. Задание отправил на проверку. |
No description provided.