Skip to content

Консольное приложение 1 - Калькулятора счёта - #1

Open
NieCloud wants to merge 9 commits into
mainfrom
dev
Open

NieCloud wants to merge 9 commits into
mainfrom
dev

Conversation

@NieCloud

@NieCloud NieCloud commented Apr 25, 2023 •

Copy link
Copy Markdown
Owner

Создание списка товаров и гостей и расчет того, кто сколько должен заплатить

Создано 3 класса:
Guests - позволяет с помощью ввода пользователей в консоль определить количество гостей
Goods - позволяет создать список товаров и их стоимость, а также вывести разделение счета в зависимости от числа гостей
RoubleFormatter - позволяет на основе заданного double выбрать правильное склонение слова "рубль" (на основе целочисленной части)

В main только инициализация классов

@ilshat-abdulin ilshat-abdulin left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Однозначно, у тебя отличная работа. Понравилось, как организовал структуру классов 👍 . Осталось только скорректировать работу метода returnRoubleString в RoubleFormatter и работа будет принята

Comment on lines +2 to +14
public static String returnRoubleString(double sum) {
int integerValueOfSum = (int) sum;
if (integerValueOfSum >=10 && integerValueOfSum<= 20) {
return "рублей";
}
if (integerValueOfSum %10 == 1) {
return "рубль";
} else if (integerValueOfSum %10 >= 2 && integerValueOfSum %10 <= 4) {
return "рубля";
} else {
return "рублей";
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠ Если сумма получится 114, то будет возвращено "рубля"
image

Нужно дополнительно учесть, что для чисел 11-19 должно быть "рублей" - для этого стоит проверять, что <число> % 100 находится между 11 и 19 включительно.

Comment thread src/main/java/Goods.java
Comment on lines +62 to +67
try {
correctDoubleInput = Double.parseDouble(scanner.next());
break;
} catch (NumberFormatException e) {
System.out.println("Введите корректную стоимость в формате рубли.копейки (например 10.22):");
}

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 thread src/main/java/Goods.java
String tempGoods = "";
String userInputGoodName;
double userInputGoodValue;
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.

🍏 Думаю, что можно было создать один сканер в main и передавать его как аргумент в методы, в которых он необходим

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.

Некоторые методы я отметил private, которые используют Scanner, потому что они исполняют техническую работу внутри класса и не должны быть доступны вне класса. Поэтому из main не хотелось бы им передавать сканер...

Comment thread src/main/java/Goods.java Outdated
import java.util.Scanner;

public class Goods {
private double billPerPerson = 0;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 IDE подсказывает, что можно эту переменную объявить локально в методе calculateAndShowResultsPerGuest, т.к. в других методах этого класса она не используется

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