diff --git a/src/main/java/AccountDivider.java b/src/main/java/AccountDivider.java index 825393e4a..f40104e1e 100644 --- a/src/main/java/AccountDivider.java +++ b/src/main/java/AccountDivider.java @@ -1,2 +1,66 @@ -package PACKAGE_NAME;public class AccountDivider { +import java.util.InputMismatchException; +import java.util.Scanner; + +public class AccountDivider { + public void start() { + Scanner scanner = new Scanner(System.in); + + // Запрашиваю кол-во гостей + int kGuests; + while (true) { + try { + System.out.print("Введите количество гостей: "); + kGuests = scanner.nextInt(); + if (kGuests < 1) { + System.out.println("Некорректное количество гостей. Гостей не может быть 0."); + } else { + break; + } + } catch (InputMismatchException e) { + System.out.println("Некорректный ввод. Введите целое положительное число."); + scanner.nextLine(); // Очистка буфера + } + } + + + // Добавление товаров + Calculator calculator = new Calculator(); + int itemsCount = calculator.getItems().size(); + while (true) { + System.out.print("Введите название товара или 'Завершить', чтобы закончить: "); + String productName = scanner.next(); + if (productName.equalsIgnoreCase("завершить")) { + break; + } + System.out.print("Введите стоимость товара: "); + double productPrice; + while (true) { + try { + productPrice = Double.parseDouble(scanner.next()); + if (productPrice <= 0) { + throw new NumberFormatException(); + } + break; + } catch (NumberFormatException e) { + System.out.println("Ошибка: стоимость товара должна быть положительным числом. Повторите ввод."); + } + } + calculator.addItem(productName, productPrice); + if (calculator.getItems().size() > itemsCount) { + System.out.println("Товар успешно добавлен."); + itemsCount++; + } + } + + + + + // Вывод результатов + System.out.println("Добавленные товары:"); + for (Calculator.Item item : calculator.getItems()) { + System.out.println(item.getName() + ": " + String.format("%.2f", item.getPrice()) + " руб."); + } + + calculator.splitBill(kGuests); + } } diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index f9e26db2b..91c75dd07 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,9 +1,10 @@ import java.util.ArrayList; import java.util.List; -import java.util.Scanner; + public class Calculator { - private List items; + + List items; public Calculator() { this.items = new ArrayList<>(); @@ -21,7 +22,7 @@ public double getTotalBill() { return total; } - public List getItems() { + List getItems() { return items; } @@ -37,22 +38,24 @@ public void splitBill(int kGuests) { // Определение окончания для "рубль" String suffix; int part = (int) totalBill; - if (part % 10 == 1 &&part % 100 != 11) { + int finalNumbers = part % 100; + if (part % 10 == 1 && finalNumbers != 11) { suffix = "рубль"; - } else if (part % 10 >= 2 &&part % 10 <= 4 && (part % 100 < 10 ||part % 100 >= 20)) { + } else if (part % 10 >= 2 && part % 10 <= 4 && !(finalNumbers >= 12 && finalNumbers <= 14)) { suffix = "рубля"; } else { suffix = "рублей"; } + System.out.println("Общая сумма счета: " + String.format("%.2f", totalBill) + " " + suffix + "."); System.out.println("Каждый гость должен заплатить по: " + String.format("%.2f", perPerson) + " " + suffix + "."); } static class Item { - private String name; - private double price; + String name; + double price; public Item(String name, double price) { this.name = name; diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..45610b183 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,8 @@ public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + AccountDivider AccountDivider = new AccountDivider(); + AccountDivider.start(); + } -} \ No newline at end of file +}