Skip to content

first dedlain #1

Open
Aleksei358 wants to merge 1 commit intomainfrom
dev
Open

first dedlain #1
Aleksei358 wants to merge 1 commit intomainfrom
dev

Conversation

@Aleksei358
Copy link
Copy Markdown
Owner

No description provided.

if (numPeople == 1) {
System.out.println("Нет смысла считать и делить на 1 человека. Введите корректное количество гостей.");
} else if (numPeople < 1) {
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.

🍏 Круто было бы подсказать пользователю, в каком диапазоне от него ожидается ввод)

break;
}
} catch (NumberFormatException e) {
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.

🍏 Рекомендую выносить повторяющиеся строки в константы. Тогда при необходимости изменений их нужно будет произвести в одном месте, а не по всему приложению

Comment on lines +8 to +9
private List<String> items;
private List<Double> prices;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 Переменные, ссылки на которые не изменяться, можно объявить final, чтобы защитить от случайного изменения.

System.out.println("Введите количество людей:");
while (true) {
try {
numPeople = Integer.parseInt(scanner.nextLine());
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 Можно использовать специальный метод сканнера для этой цели: scanner.nextInt()

public class BillCalculator {
private static final DecimalFormat decimalFormat = new DecimalFormat("0.00");
private List<String> items;
private List<Double> prices;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 Можно создать специальный класс для хранения товаров/блюд, например, Product с полями name и price.
Экземпляры этого класса также можно будет хранить в коллекции. Это позволит избежать расхождений между двумя списками. Также при финальной печати нужно будет пройти только по одному списку, а не по двум

private void displayResults() {
System.out.println("\nДобавленные товары:");
for (int i = 0; i < items.size(); i++) {
System.out.println(items.get(i) + " - " + decimalFormat.format(prices.get(i)) + " рублей");
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 При печати в памяти будут создаваться промежуточные строки из-за множественного использования оператора "+". Можно использовать StringBuilder, который сформирует только результирующую строку, или String.format(). Например:

System.out.println(String.format("%s - %s рублей", items.get(i), decimalFormat.format(prices.get(i)) )

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