Conversation
| if (numPeople == 1) { | ||
| System.out.println("Нет смысла считать и делить на 1 человека. Введите корректное количество гостей."); | ||
| } else if (numPeople < 1) { | ||
| System.out.println("Некорректное значение. Введите корректное количество гостей."); |
There was a problem hiding this comment.
🍏 Круто было бы подсказать пользователю, в каком диапазоне от него ожидается ввод)
| break; | ||
| } | ||
| } catch (NumberFormatException e) { | ||
| System.out.println("Некорректное значение. Введите корректное количество гостей."); |
There was a problem hiding this comment.
🍏 Рекомендую выносить повторяющиеся строки в константы. Тогда при необходимости изменений их нужно будет произвести в одном месте, а не по всему приложению
| private List<String> items; | ||
| private List<Double> prices; |
There was a problem hiding this comment.
🍏 Переменные, ссылки на которые не изменяться, можно объявить final, чтобы защитить от случайного изменения.
| System.out.println("Введите количество людей:"); | ||
| while (true) { | ||
| try { | ||
| numPeople = Integer.parseInt(scanner.nextLine()); |
There was a problem hiding this comment.
🍏 Можно использовать специальный метод сканнера для этой цели: scanner.nextInt()
| public class BillCalculator { | ||
| private static final DecimalFormat decimalFormat = new DecimalFormat("0.00"); | ||
| private List<String> items; | ||
| private List<Double> prices; |
There was a problem hiding this comment.
🍏 Можно создать специальный класс для хранения товаров/блюд, например, 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)) + " рублей"); |
There was a problem hiding this comment.
🍏 При печати в памяти будут создаваться промежуточные строки из-за множественного использования оператора "+". Можно использовать StringBuilder, который сформирует только результирующую строку, или String.format(). Например:
System.out.println(String.format("%s - %s рублей", items.get(i), decimalFormat.format(prices.get(i)) )
No description provided.