diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..8ec5be6 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,74 @@ +import java.lang.NumberFormatException; +import java.util.Scanner; + public class Main { + private static final Scanner scanner = new Scanner(System.in); + + private static String getRoubleWordWithCorrectEnding(int number) { + if (number % 100 > 9 && number % 100 < 20) { + return "рублей"; + } + switch (number % 10) { + case 1: + return "рубль"; + case 2: + case 3: + case 4: + return "рубля"; + default: + return "рублей"; + } + } + public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + System.out.println("На скольких человек необходимо разделить счет?"); + + String amountOfUsersAsString; + int amountOfUsers; + + while (true) { + amountOfUsersAsString = scanner.nextLine(); + try { + amountOfUsers = Integer.parseInt(amountOfUsersAsString); + if (amountOfUsers > 1) { + break; + } + System.out.println("Должно быть как минимум два человека, чтобы разделить счет!\nПовторите ввод еще раз!"); + } catch (NumberFormatException exception) { + System.out.println("Введен недопустимый параметр в качестве количества человек! Ожидалось целое число.\nПовторите ввод еще раз!"); + } + } + + ProductCalculator calculator = new ProductCalculator(); + + double productPrice; + String productPriceAsString; + String productName; + + System.out.println("Введите товар и его стоимость через пробел:"); + while (!(productName = scanner.next()).equalsIgnoreCase("завершить")) { + productPriceAsString = scanner.nextLine(); + try { + productPrice = Double.parseDouble(productPriceAsString); + if (productPrice < 0) { + System.out.println("У товара не может быть отрицательная цена!\nТовар не добавлен. Повторите ввод."); + continue; + } + calculator.addProduct(productName, productPrice); + System.out.println("Товар был успешно добавлен! Хотите добавить еще?\nЕсли да, то введите название товара и цену, иначе напишите слово \"завершить\":"); + } catch (NumberFormatException exception) { + System.out.println("Не указана допустимая цена товара! Ожидалось вещественное число.\nТовар не был добавлен! Повторите корректный ввод заново."); + } + } + + System.out.println("Добавленные товары:"); + for (Product product : calculator.getProductsList()) { + System.out.println(product.getProductName()); + } + + double sumForEachToPay = calculator.getSumOfProducts() / amountOfUsers; + System.out.printf("Сумма, которую должен заплатить каждый: %.2f %s%n", sumForEachToPay, getRoubleWordWithCorrectEnding((int) sumForEachToPay)); + } } diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 0000000..1df8ec9 --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,19 @@ +public class Product { + + String name; + double price; + + public Product(String name, double price) { + this.name = name; + this.price = price; + } + + public String getProductName() { + return name; + } + + public double getProductPrice() { + return price; + } + +} diff --git a/src/main/java/ProductCalculator.java b/src/main/java/ProductCalculator.java new file mode 100644 index 0000000..e280641 --- /dev/null +++ b/src/main/java/ProductCalculator.java @@ -0,0 +1,25 @@ +import java.util.ArrayList; + +public class ProductCalculator { + + private ArrayList products = new ArrayList<>(); + private double totalSumOfProducts = 0; + + public void addProduct(String name, double price) { + products.add(new Product(name, price)); + recalculateSum(price); + } + + private void recalculateSum(double price) { + totalSumOfProducts += price; + } + + public double getSumOfProducts() { + return totalSumOfProducts; + } + + public ArrayList getProductsList() { + return products; + } + +}