Repository navigation
Conversation
| int numberOfGuests; | ||
|
|
||
| while (true) { | ||
| numberOfGuests = scanner.nextInt(); |
There was a problem hiding this comment.
scanner.hasNextInt() или try-catch.
| System.out.println("Это некорректное значение для подсчёта. Пожалуйста введите корректное количество гостей."); | ||
| } | ||
| } | ||
| ExpensesCalculator.calculate(scanner, listOfExpenses, numberOfGuests); |
There was a problem hiding this comment.
⏫ Над переменной listOfExpenses в методе main не совершается никаких манипуляций, поэтому мы можем спокойно перенести ее объявление в calculate
| listOfExpenses += thing; | ||
| listOfExpenses += " "; | ||
| String formattedPrice; | ||
| if (price == 1) { |
There was a problem hiding this comment.
| System.out.println("Введите стоимость товара:"); | ||
| float price = 0; | ||
|
|
||
| if (scanner.hasNextFloat()) { |
There was a problem hiding this comment.
⏫ Если пользователь вводит неправильное значение, то будет правильнее указать ему на ошибку и предложить ввести значение повторно. Для того, чтобы продолжить выполнение цикла без необходимости пройти через весь блок кода мы можем вызвать ключевым словом continue
| formattedTotal = String.format("%.2f рублей", perGuest); | ||
| } | ||
| System.out.printf("Итого расходов на одного гостя: %s%n", formattedTotal); | ||
| String formattedTotal = String.format("Итого расходов на одного гостя: %.2f %s%n", perGuest, |
There was a problem hiding this comment.
- Такой алгоритм не покрывает сценарии, когда наше итоговое значение > 100. Например, если мы введем 124, то вместо "рубля" получим "рублей"
- Такой алгоритм не учитывает числа с окончанием 1 (кроме самой 1), Так если мы получим итоговую цену 21, то вместо "рубль" получим "рублей"
There was a problem hiding this comment.
Я бы тебе посоветал вынести в отдельную функцию алгоритм, который применяется для определения окончания при поштучном товаре, и применять эту функцию там и при итоговом подсчете
:)