From c139d9f25b04d3d09c4989923c4c3a5beebc55b3 Mon Sep 17 00:00:00 2001 From: Vladi1989 Date: 2023年10月24日 14:07:06 +0300 Subject: [PATCH 1/2] =?UTF-8?q?1-=D1=8F=20=D0=BF=D1=80=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/AddTovarAndSave.java | 40 +++++++++++++++++++++++++++++ src/main/java/Main.java | 41 +++++++++++++++++++++++++++++- src/main/java/People.java | 26 +++++++++++++++++++ src/main/java/TovarAndPrice.java | 15 +++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/main/java/AddTovarAndSave.java create mode 100644 src/main/java/People.java create mode 100644 src/main/java/TovarAndPrice.java diff --git a/src/main/java/AddTovarAndSave.java b/src/main/java/AddTovarAndSave.java new file mode 100644 index 000000000..b63e6efbd --- /dev/null +++ b/src/main/java/AddTovarAndSave.java @@ -0,0 +1,40 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class AddTovarAndSave { + List spisokTovarov; + + public AddTovarAndSave(){ + spisokTovarov = new ArrayList(); + } + public void addBludo(Scanner scanner){ + System.out.println("Добавить блюдо или напиток: "); + while (true) { + System.out.println("Введите название товара (или нажмите 'Завершить'): "); + String bludoName = scanner.next(); + + if (bludoName.equalsIgnoreCase("Завершить")) { + break; + } + System.out.println("Введите стоимость товара: "); + double bludoPrice = scanner.nextDouble(); + + if (bludoPrice < 0){ + System.out.println("Похоже вы ошиблись с вводом, попробуйте еще раз" + + "а то вы хотите, чтоб за товар заплатили ВАМ:-) "); + continue; + } + spisokTovarov.add(new TovarAndPrice(bludoName, bludoPrice)); + System.out.println("Товар добавлен"); + } + } + + public double getAllSumma(){ + return spisokTovarov.stream().mapToDouble(TovarAndPrice::getTovarPrice).sum(); + + } + public List getAddedTovars() { + return spisokTovarov; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..2d135ab3c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,45 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Scanner scanner = new Scanner(System.in); + People people = new People(); + int numberPeople = people.reqCountOfPeople(scanner); + + if (numberPeople < 1){ + System.out.println("Видимо никто не пришел, счет не на кого не поделить"); + } + AddTovarAndSave addTovarAndSave = new AddTovarAndSave(); + addTovarAndSave.addBludo(scanner); + + List addedTovars = addTovarAndSave.getAddedTovars(); + System.out.println("Добавленные товары:"); + for (TovarAndPrice tovar : addedTovars) { + System.out.println(tovar.getTovarName() + ": " + formatCurrency(tovar.getTovarPrice())); + } + + double allSumma = addTovarAndSave.getAllSumma(); + double onePersonSumma = allSumma / numberPeople; + System.out.println("Общий счет: " + formatCurrency (allSumma)); + System.out.println("Сумма на каждого: " + formatCurrency (onePersonSumma)); + } + + + + private static String formatCurrency(double amount) { + String formattedAmount = String.format("%.2f", amount); + formattedAmount = formattedAmount.replace(',', '.'); // Заменить запятую на точку + String[] parts = formattedAmount.split("\\."); + int integerPart = (int) Double.parseDouble(parts[0]); + + if (integerPart % 10 == 1 && integerPart % 100 != 11) { + return formattedAmount + " рубль"; + } else if ((integerPart % 10>= 2 && integerPart % 10 <= 4) && (integerPart % 100 < 12 || integerPart % 100> 14)) { + return formattedAmount + " рубля"; + } else { + return formattedAmount + " рублей"; + } } } \ No newline at end of file diff --git a/src/main/java/People.java b/src/main/java/People.java new file mode 100644 index 000000000..3802841bb --- /dev/null +++ b/src/main/java/People.java @@ -0,0 +1,26 @@ +import java.util.InputMismatchException; +import java.util.Scanner; + +public class People { + public int reqCountOfPeople (Scanner scanner) { + while (true){ + try { + System.out.println("Сколько человек будут платить? "); + int countOfPeople = scanner.nextInt(); + if (countOfPeople < 1) { + System.out.println("Введите еще раз! А то судя по этим данным вы вообще не пришли"); + } + else if (countOfPeople == 1) { + System.out.println("Попробуйте ввести еще раз, а то платить будете один! "); + } + else { + return countOfPeople; + } + } + catch (InputMismatchException e) { + System.out.println("Похоже, что вы ввели не цифры. Попробуйте еще раз "); + scanner.next(); + } + } + } +} diff --git a/src/main/java/TovarAndPrice.java b/src/main/java/TovarAndPrice.java new file mode 100644 index 000000000..612b768f3 --- /dev/null +++ b/src/main/java/TovarAndPrice.java @@ -0,0 +1,15 @@ +public class TovarAndPrice { + String tovarName; + double tovarPrice; + + public TovarAndPrice (String tovarName, double tovarPrice){ + this.tovarName = tovarName; + this.tovarPrice = tovarPrice; + } + public String getTovarName(){ + return tovarName; + } + public double getTovarPrice(){ + return tovarPrice; + } +} From 9c8794c8d90371a562dfcd2c10c1c60a3e3b8ef3 Mon Sep 17 00:00:00 2001 From: Vladi1989 Date: 2023年10月25日 12:24:30 +0300 Subject: [PATCH 2/2] =?UTF-8?q?1-=D1=8F=20=D0=BF=D1=80=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20(=D0=B2=D0=B2=D0=BE=D0=B4=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/AddTovarAndSave.java | 34 ++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/AddTovarAndSave.java b/src/main/java/AddTovarAndSave.java index b63e6efbd..338c12237 100644 --- a/src/main/java/AddTovarAndSave.java +++ b/src/main/java/AddTovarAndSave.java @@ -1,14 +1,16 @@ import java.util.ArrayList; +import java.util.InputMismatchException; import java.util.List; import java.util.Scanner; -public class AddTovarAndSave { +class AddTovarAndSave { List spisokTovarov; - public AddTovarAndSave(){ + public AddTovarAndSave() { spisokTovarov = new ArrayList(); } - public void addBludo(Scanner scanner){ + + public void addBludo (Scanner scanner) { System.out.println("Добавить блюдо или напиток: "); while (true) { System.out.println("Введите название товара (или нажмите 'Завершить'): "); @@ -17,10 +19,26 @@ public void addBludo(Scanner scanner){ if (bludoName.equalsIgnoreCase("Завершить")) { break; } - System.out.println("Введите стоимость товара: "); - double bludoPrice = scanner.nextDouble(); - if (bludoPrice < 0){ + if (!bludoName.matches("[a-zA-Zа-яА-Я]+")) { + System.out.println("У нас в ресторане все названия блюд пишутся буквами, введите еще раз: "); + continue; + } + + double bludoPrice = -1; + boolean noPrice = false; + while (!noPrice) { + System.out.println("Введите цену: "); + try { + bludoPrice = scanner.nextDouble(); + noPrice = bludoPrice>= 0; + } catch (InputMismatchException e) { + System.out.println("Ввод осуществляется только цифрами, попробуйте еще раз"); + scanner.next(); + } + } + + if (bludoPrice < 0) { System.out.println("Похоже вы ошиблись с вводом, попробуйте еще раз" + "а то вы хотите, чтоб за товар заплатили ВАМ:-) "); continue; @@ -29,10 +47,8 @@ public void addBludo(Scanner scanner){ System.out.println("Товар добавлен"); } } - - public double getAllSumma(){ + public double getAllSumma() { return spisokTovarov.stream().mapToDouble(TovarAndPrice::getTovarPrice).sum(); - } public List getAddedTovars() { return spisokTovarov;

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