Skip to content

Консольное приложение №1. Первая проектная работа.#1

Open
PhilipMaslov1 wants to merge 3 commits intomainfrom
dev
Open

Консольное приложение №1. Первая проектная работа.#1
PhilipMaslov1 wants to merge 3 commits intomainfrom
dev

Conversation

@PhilipMaslov1
Copy link
Copy Markdown
Owner

No description provided.

System.out.println("Hello world!");

int numberOfPerson; // Количество участников.
Scanner scanner = new Scanner(System.in);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чтобы сканнер не расходовал ресурсы системы, важно закрывать его в конце использования, чтобы не допускать утечек памяти. Используй метод close()

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Работу с консолью вынес в отдельный класс - ConsoleReader. Туда же добавил метод закрытия сканера, который вызывается по завершении main.


// Если сумма не может быть разделена поровну, считаем сколько должен заплатить каждый участник в максимально равных долях.
if (remOfDivision == 0)
System.out.printf("Счёт можно разделить поровну.\nКаждый должен заплатить по %.2f %s", sumPerPerson, Formatter.endOfRoubles(sumPerPerson));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В конце финальной фразы рекомендую добавить перевод строки, чтобы вывод программы не прилип к следующему за ним системному промпту

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Готово.

@@ -0,0 +1,33 @@
import java.util.Scanner;

public class Calculator {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Думаю, что данный класс можно расширить и включить в него методы и поля, которые сейчас находятся в Main, а конкретные математические операции вынести в отдельный класс Calculator. Этот тогда лучше будет переименовать, например, в SplitBill, BillSplitter или нечто подобное, отражающее его цель

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Внёс изменения. Создал класс Bill, описывающий счёт и его основные параметры
;
Работу со считыванием данных вынес в класс ConsoleReader;
По твоему совету мат. операции перенс в класс Calculator;


// Метод, уточняющий стоимость товара
public static void askGoodPrice (Good good, Scanner scanner) {
System.out.println("Введите стоимость в формате \"руб.коп\":");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Круто, что подсказываешь пользователю, в каком формате вводить данные!

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо )

scanner.next();
System.out.println("Стоимость нужно ввести в формате \"руб.коп\":");
}
good.price = Math.round(scanner.nextDouble() * 100) / 100d;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот здесь может произойти переполнение, о котором я писала в комментарии к проекту. Почитать о переполнении в java можно тут https://www.baeldung.com/java-overflow-underflow

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Прочитал про переполнение. Подскажи, пожалуйста, нужно ли добавить к операциям проверки на переполнение? Условиями успешности задачи это не предусмотрено, а чтобы корректно добавить их в код, мне нужно доплонительное время, чтобы исследовать работу с ними.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Обсудили с твоим наставником, что все-таки для зачета данного проекта нет необходимости обрабатывать переполнение. Так что проверю проект без учета этого замечания)

Учел, за исключением одного, все комментарии из #1

ToDo: нужно добавить обработку переполнений при считывании числовых значений и выполнении математических операций.
Изменения:
- учтены замечания PR #1;
- исправлена ошибка с возможностью ввести сумму товара < 0.00;
- исправлнеа ошибка на ввод суммы товара в виде очень маленьких значений (0.0001);
- исправил ошибку с неверным окончанием слова "рубль." для некоторых сумм.

ToDo: нужно добавить обработку переполнений при считывании числовых значений и выполнении математических операций.
С ревьюером и настаником согласовано влитие без учёта этого требования.
@PhilipMaslov1
Copy link
Copy Markdown
Owner Author

@kgornostaeva внёс множество правок, поправил ошибки и постарался учесть твои комментарии. Посмотри, пожалуйста. Задание отправил на проверку.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants