From 7e4d9d33ca547de94b17b876c350f86ba97add98 Mon Sep 17 00:00:00 2001 From: MaxxySE <55539735+maxxyse@users.noreply.github.com> Date: 2023年9月27日 16:24:31 +0400 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9A=D0=B0=D0=BB=D1=8C=D0=BA=D1=83=D0=BB?= =?UTF-8?q?=D1=8F=D1=82=D0=BE=D1=80=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=B5=D0=BB=D0=B8=D1=82=20=D1=81=D1=87=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BF=D0=BE=D1=80=D0=BE=D0=B2=D0=BD=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=BE=20=D0=BB=D1=8E=D0=B4=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Classes/Calculator.java | 19 +++++++++ src/main/java/Classes/DoubleFormatter.java | 7 ++++ src/main/java/Classes/Menu.java | 49 ++++++++++++++++++++++ src/main/java/Classes/Product.java | 13 ++++++ src/main/java/Classes/RubleFormatter.java | 18 ++++++++ src/main/java/Main.java | 36 +++++++++++++++- 6 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Classes/Calculator.java create mode 100644 src/main/java/Classes/DoubleFormatter.java create mode 100644 src/main/java/Classes/Menu.java create mode 100644 src/main/java/Classes/Product.java create mode 100644 src/main/java/Classes/RubleFormatter.java diff --git a/src/main/java/Classes/Calculator.java b/src/main/java/Classes/Calculator.java new file mode 100644 index 000000000..cfacb2d2f --- /dev/null +++ b/src/main/java/Classes/Calculator.java @@ -0,0 +1,19 @@ +package Classes; + +import java.util.ArrayList; + +public class Calculator { + double sum = 0.0; + + public void printMenu(int people, ArrayList products){ + System.out.println("Меню:\n"); + for(int i = 0; i < products.size(); i++){ + System.out.println(products.get(i).name +": " + DoubleFormatter.formatDouble(products.get(i).price) + RubleFormatter.formatRubles(products.get(i).price)); + sum += products.get(i).price; + } + System.out.println("\nКоличество людей: " + people); + System.out.println("\nОбщая сумма счета: " + DoubleFormatter.formatDouble(sum) + RubleFormatter.formatRubles(sum)); + System.out.println("Каждый должен заплатить по: " + DoubleFormatter.formatDouble(sum/people) + RubleFormatter.formatRubles(sum/people)); + } + +} diff --git a/src/main/java/Classes/DoubleFormatter.java b/src/main/java/Classes/DoubleFormatter.java new file mode 100644 index 000000000..749462038 --- /dev/null +++ b/src/main/java/Classes/DoubleFormatter.java @@ -0,0 +1,7 @@ +package Classes; + +public class DoubleFormatter { + public static String formatDouble(double num){ + return String.format("%.2f", num); + } +} diff --git a/src/main/java/Classes/Menu.java b/src/main/java/Classes/Menu.java new file mode 100644 index 000000000..75f88c5e4 --- /dev/null +++ b/src/main/java/Classes/Menu.java @@ -0,0 +1,49 @@ +package Classes; + +import java.util.ArrayList; +import java.util.Scanner; + +public class Menu { + + Product product; + ArrayList products = new ArrayList(); + Scanner scanner = new Scanner(System.in); + Calculator calculator = new Calculator(); + + public void setMenu(int people){ + + while(true){ + System.out.println("Введите название товара (\"Завершить\" для завершения)"); + String productName = scanner.next(); + + if (productName.equalsIgnoreCase("завершить")){ + calculator.printMenu(people, products); + break; + } else { + System.out.println("Введите цену товара (в виде рубли.копейки)"); + + product = new Product(productName, getProductPrice()); + products.add(product); + System.out.println("Товар добавлен"); + } + } + } + + private double getProductPrice(){ + while(true){ + if(scanner.hasNextDouble()){ + double price = scanner.nextDouble(); + if (price < 0){ + System.out.println("Введено отрицательное значение, повторите ввод."); + scanner = new Scanner(System.in); + } else { + return price; + } + } else { + System.out.println("Введено не число, повторите ввод."); + scanner = new Scanner(System.in); + } + } + } + +} diff --git a/src/main/java/Classes/Product.java b/src/main/java/Classes/Product.java new file mode 100644 index 000000000..17eda1ab1 --- /dev/null +++ b/src/main/java/Classes/Product.java @@ -0,0 +1,13 @@ +package Classes; + +public class Product { + + public String name; + public double price; + + public Product(String name, double price){ + this.name = name; + this.price = price; + } + +} diff --git a/src/main/java/Classes/RubleFormatter.java b/src/main/java/Classes/RubleFormatter.java new file mode 100644 index 000000000..79ef1046d --- /dev/null +++ b/src/main/java/Classes/RubleFormatter.java @@ -0,0 +1,18 @@ +package Classes; + +public class RubleFormatter { + + public static String formatRubles(double price) { + int amount = (int) price; + if (amount < 0) { + return "Отрицательное количество рублей"; + } else if (amount == 1 || (amount % 10 == 1 && amount % 100 != 11)) { + return " рубль"; + } else if ((amount>= 2 && amount <= 4) || (amount % 10>= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100>= 20))) { + return " рубля"; + } else { + return " рублей"; + } + } + +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..d7e9ff40c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,40 @@ +import java.util.Scanner; +import Classes.Menu; public class Main { + + static Scanner scanner = new Scanner(System.in); + static Menu menu = new Menu(); + static int people = 0; + public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println("На скольких человек необходимо разделить счет? (Больше 1)"); + + getAmountOfPeople(); + } + + private static void getAmountOfPeople(){ + + while (true){ + if (scanner.hasNextInt()) { + people = scanner.nextInt(); + checkAmountOfPeople(people); + break; + } else { + System.out.println("Введено неверное значение, повторите ввод."); + scanner = new Scanner(System.in); + } + } + } + + private static void checkAmountOfPeople(int people){ + if (people <= 1) { + System.out.println("Людей, между которыми делится счет, должно быть больше 1, повторите ввод."); + getAmountOfPeople(); + } else { + menu.setMenu(people); + } } + + } \ No newline at end of file From 7ea2e46b3ec27d46ff10a3633157fad4ddf5e3f9 Mon Sep 17 00:00:00 2001 From: MaxxySE <55539735+maxxyse@users.noreply.github.com> Date: 2023年9月27日 21:08:45 +0400 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9A=D0=B0=D0=BB=D1=8C=D0=BA=D1=83=D0=BB?= =?UTF-8?q?=D1=8F=D1=82=D0=BE=D1=80=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=B5=D0=BB=D0=B8=D1=82=20=D1=81=D1=87=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BF=D0=BE=D1=80=D0=BE=D0=B2=D0=BD=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=BE=20=D0=BB=D1=8E=D0=B4=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 22 ++++++------------- .../main/java/321円201円lasses/Calculator.java" | 2 +- .../java/321円201円lasses/DoubleFormatter.java" | 2 +- .../main/java/321円201円lasses/Menu.java" | 6 ++--- .../main/java/321円201円lasses/Product.java" | 2 +- .../java/321円201円lasses/RubleFormatter.java" | 2 +- 6 files changed, 14 insertions(+), 22 deletions(-) rename src/main/java/Classes/Calculator.java => "src/main/java/321円201円lasses/Calculator.java" (97%) rename src/main/java/Classes/DoubleFormatter.java => "src/main/java/321円201円lasses/DoubleFormatter.java" (88%) rename src/main/java/Classes/Menu.java => "src/main/java/321円201円lasses/Menu.java" (91%) rename src/main/java/Classes/Product.java => "src/main/java/321円201円lasses/Product.java" (91%) rename src/main/java/Classes/RubleFormatter.java => "src/main/java/321円201円lasses/RubleFormatter.java" (97%) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index d7e9ff40c..889adeac2 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,5 +1,5 @@ import java.util.Scanner; -import Classes.Menu; +import сlasses.Menu; public class Main { @@ -14,27 +14,19 @@ public static void main(String[] args) { } private static void getAmountOfPeople(){ - while (true){ if (scanner.hasNextInt()) { people = scanner.nextInt(); - checkAmountOfPeople(people); - break; + if (people> 1){ + menu.setMenu(people); + break; + } else { + System.out.println("Людей, между которыми делится счет, должно быть больше 1, повторите ввод."); + } } else { System.out.println("Введено неверное значение, повторите ввод."); scanner = new Scanner(System.in); } } } - - private static void checkAmountOfPeople(int people){ - if (people <= 1) { - System.out.println("Людей, между которыми делится счет, должно быть больше 1, повторите ввод."); - getAmountOfPeople(); - } else { - menu.setMenu(people); - } - } - - } \ No newline at end of file diff --git a/src/main/java/Classes/Calculator.java "b/src/main/java/321円201円lasses/Calculator.java" similarity index 97% rename from src/main/java/Classes/Calculator.java rename to "src/main/java/321円201円lasses/Calculator.java" index cfacb2d2f..08746de38 100644 --- a/src/main/java/Classes/Calculator.java +++ "b/src/main/java/321円201円lasses/Calculator.java" @@ -1,4 +1,4 @@ -package Classes; +package сlasses; import java.util.ArrayList; diff --git a/src/main/java/Classes/DoubleFormatter.java "b/src/main/java/321円201円lasses/DoubleFormatter.java" similarity index 88% rename from src/main/java/Classes/DoubleFormatter.java rename to "src/main/java/321円201円lasses/DoubleFormatter.java" index 749462038..139175a7a 100644 --- a/src/main/java/Classes/DoubleFormatter.java +++ "b/src/main/java/321円201円lasses/DoubleFormatter.java" @@ -1,4 +1,4 @@ -package Classes; +package сlasses; public class DoubleFormatter { public static String formatDouble(double num){ diff --git a/src/main/java/Classes/Menu.java "b/src/main/java/321円201円lasses/Menu.java" similarity index 91% rename from src/main/java/Classes/Menu.java rename to "src/main/java/321円201円lasses/Menu.java" index 75f88c5e4..0284af817 100644 --- a/src/main/java/Classes/Menu.java +++ "b/src/main/java/321円201円lasses/Menu.java" @@ -1,4 +1,4 @@ -package Classes; +package сlasses; import java.util.ArrayList; import java.util.Scanner; @@ -33,8 +33,8 @@ private double getProductPrice(){ while(true){ if(scanner.hasNextDouble()){ double price = scanner.nextDouble(); - if (price < 0){ - System.out.println("Введено отрицательное значение, повторите ввод."); + if (price <= 0){ + System.out.println("Введено отрицательное или нулевое значение, повторите ввод."); scanner = new Scanner(System.in); } else { return price; diff --git a/src/main/java/Classes/Product.java "b/src/main/java/321円201円lasses/Product.java" similarity index 91% rename from src/main/java/Classes/Product.java rename to "src/main/java/321円201円lasses/Product.java" index 17eda1ab1..efbcc071a 100644 --- a/src/main/java/Classes/Product.java +++ "b/src/main/java/321円201円lasses/Product.java" @@ -1,4 +1,4 @@ -package Classes; +package сlasses; public class Product { diff --git a/src/main/java/Classes/RubleFormatter.java "b/src/main/java/321円201円lasses/RubleFormatter.java" similarity index 97% rename from src/main/java/Classes/RubleFormatter.java rename to "src/main/java/321円201円lasses/RubleFormatter.java" index 79ef1046d..778faa08a 100644 --- a/src/main/java/Classes/RubleFormatter.java +++ "b/src/main/java/321円201円lasses/RubleFormatter.java" @@ -1,4 +1,4 @@ -package Classes; +package сlasses; public class RubleFormatter {

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