From de19ed0b5e497080ba68052b6369a6f83a65b4ba Mon Sep 17 00:00:00 2001 From: Filipp Rogozin <86800899+Fulipp@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:00:14 +0300 Subject: [PATCH 1/7] Update AccountDivider.java --- src/main/java/AccountDivider.java | 42 ++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/AccountDivider.java b/src/main/java/AccountDivider.java index 825393e4a..50f9f0fab 100644 --- a/src/main/java/AccountDivider.java +++ b/src/main/java/AccountDivider.java @@ -1,2 +1,42 @@ -package PACKAGE_NAME;public class AccountDivider { +package PACKAGE_NAME; +import java.util.Scanner; + +public class AccountDivider { + public void start() { + Scanner scanner = new Scanner(System.in); + + // Запрашиваю кол-во гостей + int kGuests; + while (true) { + System.out.print("Введите количество гостей: "); + kGuests = scanner.nextInt(); + if (kGuests < 1) { + System.out.println("Некорректное количество гостей. Гостей не может быть 0."); + } else { + break; + } + } + + // Добавляю товар + Calculator calculator = new Calculator(); + while (true) { + System.out.print("Введите название товара или 'Завершить', чтобы закончить: "); + String productName = scanner.next(); + if (productName.equalsIgnoreCase("завершить")) { + break; + } + System.out.print("Введите стоимость товара: "); + double productPrice = scanner.nextDouble(); + calculator.addItem(productName, productPrice); + System.out.println("Товар успешно добавлен."); + } + + // Вывод результатов + System.out.println("Добавленные товары:"); + for (Calculator.Item item : calculator.getItems()) { + System.out.println(item.getName() + ": " + String.format("%.2f", item.getPrice()) + " руб."); + } + + calculator.splitBill(kGuests); + } } From cb014640f8a8f3b79c234982590c32cd28bc02c1 Mon Sep 17 00:00:00 2001 From: Filipp Date: Fri, 26 Apr 2024 18:57:29 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/AccountDivider.java | 43 +++++++++++++++++++++++++++++-- src/main/java/Main.java | 7 +++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/AccountDivider.java b/src/main/java/AccountDivider.java index 825393e4a..5e508940e 100644 --- a/src/main/java/AccountDivider.java +++ b/src/main/java/AccountDivider.java @@ -1,2 +1,41 @@ -package PACKAGE_NAME;public class AccountDivider { -} +import java.util.Scanner; + +public class AccountDivider { + public void start() { + Scanner scanner = new Scanner(System.in); + + // Запрашиваю кол-во гостей + int kGuests; + while (true) { + System.out.print("Введите количество гостей: "); + kGuests = scanner.nextInt(); + if (kGuests < 1) { + System.out.println("Некорректное количество гостей. Гостей не может быть 0."); + } else { + break; + } + } + + // Добавляю товар + Calculator calculator = new Calculator(); + while (true) { + System.out.print("Введите название товара или 'Завершить', чтобы закончить: "); + String productName = scanner.next(); + if (productName.equalsIgnoreCase("завершить")) { + break; + } + System.out.print("Введите стоимость товара: "); + double productPrice = scanner.nextDouble(); + calculator.addItem(productName, productPrice); + System.out.println("Товар успешно добавлен."); + } + + // Вывод результатов + System.out.println("Добавленные товары:"); + for (Calculator.Item item : calculator.getItems()) { + System.out.println(item.getName() + ": " + String.format("%.2f", item.getPrice()) + " руб."); + } + + calculator.splitBill(kGuests); + } +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..e2c8c1b9c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,9 @@ +import java.util.Scanner; + public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + AccountDivider AccountDivider = new AccountDivider(); + AccountDivider.start(); } -} \ No newline at end of file +} From c9bad5ca24156793d9dc897b5b1568f9be55e80b Mon Sep 17 00:00:00 2001 From: Filipp Date: Fri, 26 Apr 2024 19:16:26 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=97=D0=90=D0=9A=D0=9E=D0=9D=D0=A7=D0=98?= =?UTF-8?q?=D0=9B=20=D0=A0=D0=90=D0=91=D0=9E=D0=A2=D0=A31?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index e2c8c1b9c..c5665da87 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -5,5 +5,6 @@ public class Main { public static void main(String[] args) { AccountDivider AccountDivider = new AccountDivider(); AccountDivider.start(); + } } From 9fb181399468275dd5fc7e3ae915ba120532963e Mon Sep 17 00:00:00 2001 From: Filipp Date: Fri, 26 Apr 2024 19:23:02 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=97=D0=90=D0=9A=D0=9E=D0=9D=D0=A7=D0=98?= =?UTF-8?q?=D0=9B=20=D0=A0=D0=90=D0=91=D0=9E=D0=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/AccountDivider.java | 41 ++++++++++++++++++++++++++++++- src/main/java/Main.java | 4 ++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/main/java/AccountDivider.java b/src/main/java/AccountDivider.java index 825393e4a..67ba7a90a 100644 --- a/src/main/java/AccountDivider.java +++ b/src/main/java/AccountDivider.java @@ -1,2 +1,41 @@ -package PACKAGE_NAME;public class AccountDivider { +import java.util.Scanner; + +public class AccountDivider { + public void start() { + Scanner scanner = new Scanner(System.in); + + // Запрашиваю кол-во гостей + int kGuests; + while (true) { + System.out.print("Введите количество гостей: "); + kGuests = scanner.nextInt(); + if (kGuests < 1) { + System.out.println("Некорректное количество гостей. Гостей не может быть 0."); + } else { + break; + } + } + + // Добавляю товар + Calculator calculator = new Calculator(); + while (true) { + System.out.print("Введите название товара или 'Завершить', чтобы закончить: "); + String productName = scanner.next(); + if (productName.equalsIgnoreCase("завершить")) { + break; + } + System.out.print("Введите стоимость товара: "); + double productPrice = scanner.nextDouble(); + calculator.addItem(productName, productPrice); + System.out.println("Товар успешно добавлен."); + } + + // Вывод результатов + System.out.println("Добавленные товары:"); + for (Calculator.Item item : calculator.getItems()) { + System.out.println(item.getName() + ": " + String.format("%.2f", item.getPrice()) + " руб."); + } + + calculator.splitBill(kGuests); + } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index c5665da87..90aa7d530 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,10 +1,12 @@ -import java.util.Scanner; + public class Main { public static void main(String[] args) { AccountDivider AccountDivider = new AccountDivider(); AccountDivider.start(); + + } } From 050146f33e817a03c98f6c75482c8ecfed0126b0 Mon Sep 17 00:00:00 2001 From: Filipp Date: Fri, 26 Apr 2024 20:14:48 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 90aa7d530..ba5396e41 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,4 @@ - - public class Main { public static void main(String[] args) { AccountDivider AccountDivider = new AccountDivider(); @@ -8,5 +6,6 @@ public static void main(String[] args) { + } } From c61376583551999d0abf1915ddac553f4bbdbf99 Mon Sep 17 00:00:00 2001 From: Filipp Date: Sat, 27 Apr 2024 12:41:44 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B9?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B4,=20=D0=B4=D0=BE=D0=BB=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=8F=D0=B2=D0=B8=D1=82=D1=81=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=20=D0=BA=D0=B0=D0=BB=D1=8C=D0=BA=D1=83?= =?UTF-8?q?=D0=BB=D1=8F=D1=82=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/AccountDivider.java | 1 + src/main/java/Calculator.java | 11 ++++++----- src/main/java/Main.java | 4 ---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/AccountDivider.java b/src/main/java/AccountDivider.java index 67ba7a90a..c6ee856d9 100644 --- a/src/main/java/AccountDivider.java +++ b/src/main/java/AccountDivider.java @@ -36,6 +36,7 @@ public void start() { System.out.println(item.getName() + ": " + String.format("%.2f", item.getPrice()) + " руб."); } + calculator.splitBill(kGuests); } } diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index f9e26db2b..19b8c03a6 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,9 +1,10 @@ import java.util.ArrayList; import java.util.List; -import java.util.Scanner; + + public class Calculator { - private List items; + List items; public Calculator() { this.items = new ArrayList<>(); @@ -21,7 +22,7 @@ public double getTotalBill() { return total; } - public List getItems() { + List getItems() { return items; } @@ -51,8 +52,8 @@ public void splitBill(int kGuests) { static class Item { - private String name; - private double price; + public String name; + public double price; public Item(String name, double price) { this.name = name; diff --git a/src/main/java/Main.java b/src/main/java/Main.java index ba5396e41..f942a0614 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,9 +3,5 @@ public class Main { public static void main(String[] args) { AccountDivider AccountDivider = new AccountDivider(); AccountDivider.start(); - - - - } } From e54fcf244912ddba819919393e008d3651744a56 Mon Sep 17 00:00:00 2001 From: Filipp Date: Sun, 28 Apr 2024 23:45:11 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20"=D1=80=D1=83=D0=B1",=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B8=D1=81=D0=BA=D0=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/AccountDivider.java | 44 ++++++++++++++++++++++++------- src/main/java/Calculator.java | 12 +++++---- src/main/java/Main.java | 1 + 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/main/java/AccountDivider.java b/src/main/java/AccountDivider.java index c6ee856d9..f40104e1e 100644 --- a/src/main/java/AccountDivider.java +++ b/src/main/java/AccountDivider.java @@ -1,3 +1,4 @@ +import java.util.InputMismatchException; import java.util.Scanner; public class AccountDivider { @@ -7,17 +8,24 @@ public void start() { // Запрашиваю кол-во гостей int kGuests; while (true) { - System.out.print("Введите количество гостей: "); - kGuests = scanner.nextInt(); - if (kGuests < 1) { - System.out.println("Некорректное количество гостей. Гостей не может быть 0."); - } else { - break; + try { + System.out.print("Введите количество гостей: "); + kGuests = scanner.nextInt(); + if (kGuests < 1) { + System.out.println("Некорректное количество гостей. Гостей не может быть 0."); + } else { + break; + } + } catch (InputMismatchException e) { + System.out.println("Некорректный ввод. Введите целое положительное число."); + scanner.nextLine(); // Очистка буфера } } - // Добавляю товар + + // Добавление товаров Calculator calculator = new Calculator(); + int itemsCount = calculator.getItems().size(); while (true) { System.out.print("Введите название товара или 'Завершить', чтобы закончить: "); String productName = scanner.next(); @@ -25,18 +33,34 @@ public void start() { break; } System.out.print("Введите стоимость товара: "); - double productPrice = scanner.nextDouble(); + double productPrice; + while (true) { + try { + productPrice = Double.parseDouble(scanner.next()); + if (productPrice <= 0) { + throw new NumberFormatException(); + } + break; + } catch (NumberFormatException e) { + System.out.println("Ошибка: стоимость товара должна быть положительным числом. Повторите ввод."); + } + } calculator.addItem(productName, productPrice); - System.out.println("Товар успешно добавлен."); + if (calculator.getItems().size() > itemsCount) { + System.out.println("Товар успешно добавлен."); + itemsCount++; + } } + + + // Вывод результатов System.out.println("Добавленные товары:"); for (Calculator.Item item : calculator.getItems()) { System.out.println(item.getName() + ": " + String.format("%.2f", item.getPrice()) + " руб."); } - calculator.splitBill(kGuests); } } diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 19b8c03a6..91c75dd07 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -2,8 +2,8 @@ import java.util.List; - public class Calculator { + List items; public Calculator() { @@ -38,22 +38,24 @@ public void splitBill(int kGuests) { // Определение окончания для "рубль" String suffix; int part = (int) totalBill; - if (part % 10 == 1 &&part % 100 != 11) { + int finalNumbers = part % 100; + if (part % 10 == 1 && finalNumbers != 11) { suffix = "рубль"; - } else if (part % 10 >= 2 &&part % 10 <= 4 && (part % 100 < 10 ||part % 100 >= 20)) { + } else if (part % 10 >= 2 && part % 10 <= 4 && !(finalNumbers >= 12 && finalNumbers <= 14)) { suffix = "рубля"; } else { suffix = "рублей"; } + System.out.println("Общая сумма счета: " + String.format("%.2f", totalBill) + " " + suffix + "."); System.out.println("Каждый гость должен заплатить по: " + String.format("%.2f", perPerson) + " " + suffix + "."); } static class Item { - public String name; - public double price; + String name; + double price; public Item(String name, double price) { this.name = name; diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f942a0614..45610b183 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,5 +3,6 @@ public class Main { public static void main(String[] args) { AccountDivider AccountDivider = new AccountDivider(); AccountDivider.start(); + } }