From 02f209ae789eda21798c146b519229889afaba5c Mon Sep 17 00:00:00 2001 From: Catovskii Date: 2024年5月29日 07:28:30 +0300 Subject: [PATCH 1/7] PLus Main code and class Products --- src/main/java/Main.java | 110 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 108 insertions(+), 2 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..6917ac346 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,112 @@ +import java.util.ArrayList; +import java.util.Scanner; 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("Введите целое число!"); + sc.nextLine(); // Под вопросом почему без него пропускает следующий ввод + } + } + + // Ввод товаров + + Products products = new Products(); + + while (true) { + + System.out.println("Введите название продукта:"); + String name = sc.nextLine(); + + while (true) { + System.out.println("Введите цену продукта в формате [рубли.копейки]:"); + try { + // По причине того что цену в задаче просят вводить через "." а консолька этого + // не понимает + String priceLine = sc.nextLine(); + double price = Double.parseDouble(priceLine); + // Добавляем продукт + products.addProduct(name, price); + System.out.println("Продукт добавлен!"); + break; + } catch (NumberFormatException e) { + System.out.println("Неправильно указана цена!"); + } + } + + // Проверка желания добавить еще + System.out.println("Хотите добавить еще один продукт?"); + String nextOrEnd = sc.nextLine(); + if (nextOrEnd.equalsIgnoreCase("Завершить")) { + break; + } + + } + + // Выводим список товаров и сумму взноса + products.printProducts(); + products.getTotal(persons); + + } +} + +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) { + String rub; + double sum = getSum(); + rub = switch ((int) Math.floor(sum)) { + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + System.out.println("Вы должны внести: " + String.format("%.2f", sum / persons) + " " + rub); + + } + + public void printProducts() { + System.out.println("Добавленные товары:"); + for (Product product : products) { + System.out.println(product.name); + } } -} \ No newline at end of file +} From 11197758cf882cb5f34f088a48671ae02e482692 Mon Sep 17 00:00:00 2001 From: Catovskii Date: 2024年5月29日 22:11:52 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=B4=D1=81=D1=87=D0=B5?= =?UTF-8?q?=D1=82=D0=B0=20=D1=81=D1=83=D0=BC=D0=BC=20+=20=D0=9D=D0=B0?= =?UTF-8?q?=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D1=80=D0=B0?= =?UTF-8?q?=D1=81=D0=BE=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 6917ac346..535770a1a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -10,7 +10,7 @@ public static void main(String[] args) { int persons; while (true) { try { - System.out.println("Введите количество людей:"); + System.out.println("На сколько человек разделить счет?"); persons = sc.nextInt(); if (persons> 1) { sc.nextLine(); // Под вопросом почему без него пропускает следующий ввод @@ -19,7 +19,7 @@ public static void main(String[] args) { System.out.println("Неправильное количество людей!"); } } catch (Exception e) { - System.out.println("Введите целое число!"); + System.out.println("Введите целое число!\n"); //Перенос строки для красоты sc.nextLine(); // Под вопросом почему без него пропускает следующий ввод } } @@ -30,19 +30,23 @@ public static void main(String[] args) { while (true) { - System.out.println("Введите название продукта:"); + System.out.println("\nВведите название продукта:"); //Перенос строки для красоты String name = sc.nextLine(); while (true) { System.out.println("Введите цену продукта в формате [рубли.копейки]:"); try { // По причине того что цену в задаче просят вводить через "." а консолька этого - // не понимает - String priceLine = sc.nextLine(); - double price = Double.parseDouble(priceLine); + // не понимает и хочет ввода через "," + String priceString = sc.nextLine(); + double price = Double.parseDouble(priceString); + if (price <= 0) { + throw new NumberFormatException(); + } + // Добавляем продукт products.addProduct(name, price); - System.out.println("Продукт добавлен!"); + System.out.println("Продукт добавлен!\n"); //Перенос строки для красоты break; } catch (NumberFormatException e) { System.out.println("Неправильно указана цена!"); @@ -52,12 +56,14 @@ public static void main(String[] args) { // Проверка желания добавить еще System.out.println("Хотите добавить еще один продукт?"); String nextOrEnd = sc.nextLine(); - if (nextOrEnd.equalsIgnoreCase("Завершить")) { + if (nextOrEnd.equalsIgnoreCase("End")) { break; } } + sc.close(); // Для приличия закроем + // Выводим список товаров и сумму взноса products.printProducts(); products.getTotal(persons); @@ -93,18 +99,19 @@ private double getSum() { public void getTotal(int persons) { String rub; - double sum = getSum(); - rub = switch ((int) Math.floor(sum)) { + double payment = getSum()/persons; + rub = switch ((int)(Math.floor(payment))%10) // Сумма может быть и 123.04 Нас интересует только цифра 3. + { case 1 -> "рубль"; case 2, 3, 4 -> "рубля"; default -> "рублей"; }; - System.out.println("Вы должны внести: " + String.format("%.2f", sum / persons) + " " + rub); + System.out.println("Вы должны внести: " + String.format("%.2f", payment) + " " + rub); } public void printProducts() { - System.out.println("Добавленные товары:"); + System.out.println("\nДобавленные товары:"); //Перенос строки для красоты for (Product product : products) { System.out.println(product.name); } From 85d2d52b383f9ddf8d553c99a0cba60993e5d66f Mon Sep 17 00:00:00 2001 From: Catovskii Date: 2024年5月29日 22:37:41 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BB=D0=BE=D0=B2=D0=B0=20"?= =?UTF-8?q?=D0=97=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B8=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 535770a1a..65085476c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -56,7 +56,7 @@ public static void main(String[] args) { // Проверка желания добавить еще System.out.println("Хотите добавить еще один продукт?"); String nextOrEnd = sc.nextLine(); - if (nextOrEnd.equalsIgnoreCase("End")) { + if (nextOrEnd.equalsIgnoreCase("Завершить")) { break; } From 002cf4340350f60089716b2b785b32b36859becd Mon Sep 17 00:00:00 2001 From: Catovskii Date: 2024年5月30日 23:12:19 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0?= =?UTF-8?q?=20=D1=84=D0=BE=D1=80=D0=BC=D1=8B=20"=D1=80=D1=83=D0=B1=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлена обработка случая вывода суммы от 11 до 19 рублей --- src/main/java/Main.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 65085476c..6d0cad9e2 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -100,12 +100,15 @@ private double getSum() { public void getTotal(int persons) { String rub; double payment = getSum()/persons; - rub = switch ((int)(Math.floor(payment))%10) // Сумма может быть и 123.04 Нас интересует только цифра 3. - { - case 1 -> "рубль"; - case 2, 3, 4 -> "рубля"; - default -> "рублей"; - }; + if (payment> 10 && payment <20) { rub= "рублей"; } // Добавлен вариант с десятками + else { + rub = switch ((int)(Math.floor(payment))%10) // Сумма может быть и 123.04 Нас интересует только цифра 3. + { + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + } System.out.println("Вы должны внести: " + String.format("%.2f", payment) + " " + rub); } From 830815f9799817382e4b480dc5cf510779ce8521 Mon Sep 17 00:00:00 2001 From: Catovskii Date: 2024年5月31日 10:53:37 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=BC=20Rub.=20?= =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=D1=8B=20=D0=B2=D1=8B=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 50 ++------------------------------ src/main/java/calc/Products.java | 43 +++++++++++++++++++++++++++ src/main/java/calc/Rub.java | 17 +++++++++++ 3 files changed, 63 insertions(+), 47 deletions(-) create mode 100644 src/main/java/calc/Products.java create mode 100644 src/main/java/calc/Rub.java diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 6d0cad9e2..93df9ea11 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,7 @@ -import java.util.ArrayList; import java.util.Scanner; +import calc.Products; + public class Main { public static void main(String[] args) { @@ -56,7 +57,7 @@ public static void main(String[] args) { // Проверка желания добавить еще System.out.println("Хотите добавить еще один продукт?"); String nextOrEnd = sc.nextLine(); - if (nextOrEnd.equalsIgnoreCase("Завершить")) { + if (nextOrEnd.equalsIgnoreCase("End")) { break; } @@ -71,52 +72,7 @@ public static void main(String[] args) { } } -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) { - String rub; - double payment = getSum()/persons; - if (payment> 10 && payment <20) { rub= "рублей"; } // Добавлен вариант с десятками - else { - rub = switch ((int)(Math.floor(payment))%10) // Сумма может быть и 123.04 Нас интересует только цифра 3. - { - case 1 -> "рубль"; - case 2, 3, 4 -> "рубля"; - default -> "рублей"; - }; - } - System.out.println("Вы должны внести: " + String.format("%.2f", payment) + " " + rub); - - } - - public void printProducts() { - System.out.println("\nДобавленные товары:"); //Перенос строки для красоты - for (Product product : products) { - System.out.println(product.name); - } - } -} 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..d90aeaae3 --- /dev/null +++ b/src/main/java/calc/Rub.java @@ -0,0 +1,17 @@ +package calc; + +class Rub { + static String returnRubLine(double payment){ + String rub; + if (payment> 10 && payment <20) { rub = "рублей"; } // Добавлен вариант с десятками + else { + rub = switch ((int)(Math.floor(payment))%10) // Сумма может быть и 123.04 Нас интересует только цифра 3. + { + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + } + return rub; + } +} \ No newline at end of file From ed6cb9d1e199ecd8fa8d2b6a249fac1601454fd2 Mon Sep 17 00:00:00 2001 From: Catovskii Date: 2024年5月31日 10:54:21 +0300 Subject: [PATCH 6/7] Update Main.java --- src/main/java/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 93df9ea11..360da86f7 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -57,7 +57,7 @@ public static void main(String[] args) { // Проверка желания добавить еще System.out.println("Хотите добавить еще один продукт?"); String nextOrEnd = sc.nextLine(); - if (nextOrEnd.equalsIgnoreCase("End")) { + if (nextOrEnd.equalsIgnoreCase("Завершить")) { break; } From 7c7d8f2bd504342cab463dcaa16b51fba41753ba Mon Sep 17 00:00:00 2001 From: Catovskii Date: Sat, 1 Jun 2024 21:46:34 +0300 Subject: [PATCH 7/7] Update Rub.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправлено. Без комментариев. Проблема не кодирования, а знания русского языка)) --- src/main/java/calc/Rub.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/calc/Rub.java b/src/main/java/calc/Rub.java index d90aeaae3..8585e1b8e 100644 --- a/src/main/java/calc/Rub.java +++ b/src/main/java/calc/Rub.java @@ -1,11 +1,14 @@ package calc; class Rub { + static String returnRubLine(double payment){ String rub; - if (payment> 10 && payment <20) { rub = "рублей"; } // Добавлен вариант с десятками + + if ((int)(Math.floor(payment)) % 100> 10 && (int)(Math.floor(payment)) % 100 < 15) + { rub = "рублей"; } else { - rub = switch ((int)(Math.floor(payment))%10) // Сумма может быть и 123.04 Нас интересует только цифра 3. + rub = switch ((int)(Math.floor(payment))%10) { case 1 -> "рубль"; case 2, 3, 4 -> "рубля";

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