From 7a61ee1d2d56e2d7e09477a4c9b16caf162da365 Mon Sep 17 00:00:00 2001 From: Spyker3D Date: 2023年7月29日 17:38:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BF=D1=80=D0=B8=D0=BD=D1=82=202.=20?= =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD=D0=B0=D1=8F=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=E2=84=961.=20=D0=97=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=B5=20=D1=81=D0=BF=D0=B0=D1=81=D0=B8?= =?UTF-8?q?=D0=B1=D0=BE=20=D0=B7=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D1=83!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 40 ++++++++++++++++++++++++++ src/main/java/Formatter.java | 24 ++++++++++++++++ src/main/java/Item.java | 23 +++++++++++++++ src/main/java/Main.java | 54 ++++++++++++++++++++++++++++++++++- 4 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Calculator.java create mode 100644 src/main/java/Formatter.java create mode 100644 src/main/java/Item.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..abe22cb00 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,40 @@ +import java.util.Scanner; + +public class Calculator { + + public String getAllItemsList(String allItemsList, String name, double price) { + Item item = new Item(name, price); + allItemsList += item.toString(); + + return allItemsList; + + } + + public String addName() { + Scanner scanner = new Scanner(System.in); + System.out.print("Введите наименование товара: "); + return scanner.nextLine(); + } + + public double addPrice() { + Scanner scanner = new Scanner(System.in); + Double price; + + System.out.print("Введите стоимость товара в формате рубли.копейки: "); + if (scanner.hasNextDouble()) { + price = scanner.nextDouble(); + scanner.nextLine(); + + if (price < 0) { + System.out.println("Ошибка! Стоимость товара не может быть отрицательной."); + price = addPrice(); + } + } else { + System.out.println("Ошибка! Некорректно введена цена товара (введите цену в " + + "формате \"рубли.копейки\""); + scanner.nextLine(); + price = addPrice(); + } + return price; + } +} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java new file mode 100644 index 000000000..6f3bd5ea8 --- /dev/null +++ b/src/main/java/Formatter.java @@ -0,0 +1,24 @@ +public class Formatter { + + public String formatRub(double price) { + double roundedPrice = Math.floor(price) % 10; + double roundedPrice2 = Math.floor(price) % 100; + + String wording; + if (roundedPrice2 == 11 || roundedPrice2 == 12 || roundedPrice2 == 13 || + roundedPrice2 == 14) { + wording = roundPrice(price) + " рублей.\n"; + } else if (roundedPrice == 1) { + wording = roundPrice(price) + " рубль.\n"; + } else if (roundedPrice < 5 && roundedPrice> 1) { + wording = roundPrice(price) + " рубля.\n"; + } else { + wording = roundPrice(price) + " рублей.\n"; + } + return wording; + } + + private String roundPrice(double price) { + return String.format("%.2f", price); + } +} diff --git a/src/main/java/Item.java b/src/main/java/Item.java new file mode 100644 index 000000000..f8da65a1f --- /dev/null +++ b/src/main/java/Item.java @@ -0,0 +1,23 @@ +public class Item { + private String name; + private double price; + + public Item (String name, double price) { + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public double getPrice() { + return price; + } + + @Override + public String toString() { + Formatter formatting = new Formatter(); + return name + ": " + formatting.formatRub(price); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..593310c00 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,58 @@ +import android.security.keystore.StrongBoxUnavailableException; + +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + + Scanner scanner = new Scanner(System.in); + int num; + + while (true) { + System.out.print("Укажите на скольких человек необходимо разделить счёт: "); + if (scanner.hasNextInt()) { + num = scanner.nextInt(); + if (num == 1) { + System.out.println("Ошибка! Количество человек = 1. Расчёт не имеет смысла. " + + "Введите количество человек заново."); + } else if (num < 1) { + System.out.println("Ошибка! Количество челвовек должно быть больше 1." + + "Введите количество человек заново."); + } else { + scanner.nextLine(); + break; + } + } else { + System.out.println("Ошибка! Количество человек должно быть натуральным числом."); + scanner.nextLine(); + } + } + + String allItemsList = ""; + double totalPrice = 0; + + + while (true) { + Calculator calculator = new Calculator(); + String name = calculator.addName(); + double price = calculator.addPrice(); + + totalPrice += price; + allItemsList = calculator.getAllItemsList(allItemsList, name, price); + + System.out.println("Товар успешно добавлен в калькулятор!" + + " Хотите добавить еще один товар? Если да, то введите любой символ, " + + "если нет - введите команду \"Завершить\"."); + + if (scanner.nextLine().equalsIgnoreCase("Завершить")) { + break; + } + } + scanner.close(); + + System.out.println("Добавленные товары:\n" + allItemsList); + + Formatter formatting = new Formatter(); + System.out.println("Cумма к оплате: " + formatting.formatRub(totalPrice / num)); } } \ No newline at end of file

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