diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..360da86f7 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,78 @@ +import java.util.Scanner; + +import calc.Products; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + + Scanner sc = new Scanner(System.in); + + // Ввод количества людей + int persons; + while (true) { + try { + System.out.println("На сколько человек разделить счет?"); + persons = sc.nextInt(); + if (persons> 1) { + sc.nextLine(); // Под вопросом почему без него пропускает следующий ввод + break; + } else { + System.out.println("Неправильное количество людей!"); + } + } catch (Exception e) { + System.out.println("Введите целое число!\n"); //Перенос строки для красоты + sc.nextLine(); // Под вопросом почему без него пропускает следующий ввод + } + } + + // Ввод товаров + + Products products = new Products(); + + while (true) { + + System.out.println("\nВведите название продукта:"); //Перенос строки для красоты + String name = sc.nextLine(); + + while (true) { + System.out.println("Введите цену продукта в формате [рубли.копейки]:"); + try { + // По причине того что цену в задаче просят вводить через "." а консолька этого + // не понимает и хочет ввода через "," + String priceString = sc.nextLine(); + double price = Double.parseDouble(priceString); + if (price <= 0) { + throw new NumberFormatException(); + } + + // Добавляем продукт + products.addProduct(name, price); + System.out.println("Продукт добавлен!\n"); //Перенос строки для красоты + break; + } catch (NumberFormatException e) { + System.out.println("Неправильно указана цена!"); + } + } + + // Проверка желания добавить еще + System.out.println("Хотите добавить еще один продукт?"); + String nextOrEnd = sc.nextLine(); + if (nextOrEnd.equalsIgnoreCase("Завершить")) { + break; + } + + } + + sc.close(); // Для приличия закроем + + // Выводим список товаров и сумму взноса + products.printProducts(); + products.getTotal(persons); + } -} \ No newline at end of file +} + + + + + diff --git a/src/main/java/calc/Products.java b/src/main/java/calc/Products.java new file mode 100644 index 000000000..ed80289c8 --- /dev/null +++ b/src/main/java/calc/Products.java @@ -0,0 +1,43 @@ +package calc; + +import java.util.ArrayList; + +public class Products { + + private static class Product { + String name; + double price; + + Product(String name, double price) { + this.name = name; + this.price = price; + } + } + + ArrayList products = new ArrayList(); + + public void addProduct(String name, double price) { + products.add(new Product(name, price)); + } + + private double getSum() { + double sum = 0; + for (Product product : products) { + sum += product.price; + } + return sum; + } + + public void getTotal(int persons) { + double payment = getSum()/persons; + System.out.println("Вы должны внести: " + String.format("%.2f", payment) + " " + Rub.returnRubLine(payment)); + + } + + public void printProducts() { + System.out.println("\nДобавленные товары:"); //Перенос строки для красоты + for (Product product : products) { + System.out.println(product.name); + } + } +} \ No newline at end of file diff --git a/src/main/java/calc/Rub.java b/src/main/java/calc/Rub.java new file mode 100644 index 000000000..8585e1b8e --- /dev/null +++ b/src/main/java/calc/Rub.java @@ -0,0 +1,20 @@ +package calc; + +class Rub { + + static String returnRubLine(double payment){ + String rub; + + if ((int)(Math.floor(payment)) % 100> 10 && (int)(Math.floor(payment)) % 100 < 15) + { rub = "рублей"; } + else { + rub = switch ((int)(Math.floor(payment))%10) + { + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + } + return rub; + } +} \ No newline at end of file

AltStyle によって変換されたページ (->オリジナル) /