From 580782b6cbf37c0d8e5591f59fe671d9e4b74020 Mon Sep 17 00:00:00 2001 From: niksshg <72571388+niksshg@users.noreply.github.com> Date: 2022年10月26日 01:51:38 +0400 Subject: [PATCH 1/2] Final commit --- src/main/java/Calculator.java | 44 +++++++++++++++++++++++++++++ src/main/java/Main.java | 53 +++++++++++++++++++++++++++++++++-- src/main/java/Product.java | 19 +++++++++++++ 3 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 src/main/java/Calculator.java create mode 100644 src/main/java/Product.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 0000000..153f444 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,44 @@ +public class Calculator { + + int numberOfCustomers; + double bill; + Product p; + + Calculator(int numberOfCustomers, double bill) { + this.numberOfCustomers = numberOfCustomers; + this.bill = bill; + } + + public void addProduct(Product p) { + this.bill += p.getPrice(); + } + + public String calculateBill() { + return correctCurrency(Math.floor(bill / numberOfCustomers)); + } + + public String correctCurrency(double value) { + int lastValue = (int) value % 10; + String corretFormat = ""; + switch (lastValue) { + case 5: + case 6: + case 7: + case 8: + case 9: + case 0: + corretFormat = value + " " + "рублей"; + break; + case 1: + corretFormat = value + " " + "рубль"; + break; + case 2: + case 3: + case 4: + corretFormat = value + " " + "рубля"; + break; + } + return corretFormat; + } + +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..6478d32 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,55 @@ +import java.util.ArrayList; +import java.util.Scanner; + public class Main { + private static Scanner s = new Scanner(System.in); + private static int customers; + private static String product; + private static double price; + static Calculator c; + static ArrayList products = new ArrayList(); + static String enough; public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + System.out.println("На скольких человек необходимо разделить счёт?"); + customers = s.nextInt(); + while (customers <= 1) { + System.out.println("Это некорректное значение для подсчёта"); + System.out.println("Введите корректное количество гостей. Если гостей меньше двух, то расчет не требуется"); + customers = s.nextInt(); + } + c = new Calculator(customers, 0); + + outer: + while (true) { + System.out.println("Укажите наименование товара:"); + product = s.next(); + System.out.println("Укажите стоимость товара в формате 'рубли.копейки' [10.45, 11.40]:"); + try { + price = s.nextDouble(); + } catch (Exception e) { + System.out.println("Товар должен быть указан в корректном формате 'рубли.копейки' [10.45, 11.40]"); + break; + } + Product p = new Product(product, price); + c.addProduct(p); + products.add(p); + + do { + System.out.println("Добавить еще товаров в заказ (Да/Нет)?"); + enough = s.next(); + if (enough.equalsIgnoreCase("нет")) { + System.out.println("Добавленные товары:"); + for (int i = 0; i < products.size(); i++) { + System.out.println(products.get(i).getLabel()); + } + System.out.println("Каждый поситетль должен заплатить" + " " + c.calculateBill()); + break outer; + } else if (enough.equalsIgnoreCase("да")){ + break; + } + } while (!enough.equalsIgnoreCase("нет") || !enough.equalsIgnoreCase("да")); + } } } + diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 0000000..ce81e02 --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,19 @@ +public class Product { + String label; + double price; + + Product(String label, double price) { + this.label = label; + this.price = price; + + } + + public String getLabel() { + return label; + } + + public double getPrice() { + return price; + } + +} From 52039dec7b3afc097a86cab3acf108a921e9e280 Mon Sep 17 00:00:00 2001 From: niksshg <72571388+niksshg@users.noreply.github.com> Date: 2022年11月10日 16:21:16 +0400 Subject: [PATCH 2/2] #1 Comments resolved --- src/main/java/Calculator.java | 64 ++++++++++++++++----------------- src/main/java/Main.java | 68 +++++++++++++++++++++++------------ 2 files changed, 78 insertions(+), 54 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 153f444..20db1d6 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,44 +1,44 @@ public class Calculator { - int numberOfCustomers; - double bill; - Product p; + static double bill; - Calculator(int numberOfCustomers, double bill) { - this.numberOfCustomers = numberOfCustomers; - this.bill = bill; + public static void addProduct(Product p) { + bill += p.getPrice(); + System.out.println(bill); } - public void addProduct(Product p) { - this.bill += p.getPrice(); - } - - public String calculateBill() { + public static String calculateBill(int numberOfCustomers) { return correctCurrency(Math.floor(bill / numberOfCustomers)); } - public String correctCurrency(double value) { + public static String correctCurrency (double value) { + int twoDigits = (int) value % 100; int lastValue = (int) value % 10; - String corretFormat = ""; - switch (lastValue) { - case 5: - case 6: - case 7: - case 8: - case 9: - case 0: - corretFormat = value + " " + "рублей"; - break; - case 1: - corretFormat = value + " " + "рубль"; - break; - case 2: - case 3: - case 4: - corretFormat = value + " " + "рубля"; - break; - } - return corretFormat; + String correctFormat = value + " "; + + if (String.valueOf(Math.abs((long)twoDigits)).charAt(0) == '1' && twoDigits>= 10 && twoDigits < 20) { + correctFormat += "рублей"; + } else { + switch (lastValue) { + case 5: + case 6: + case 7: + case 8: + case 9: + case 0: + correctFormat += "рублей"; + break; + case 1: + correctFormat += "рубль"; + break; + case 2: + case 3: + case 4: + correctFormat += "рубля"; + break; + } + } + return correctFormat; } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 6478d32..3873664 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,40 +1,61 @@ import java.util.ArrayList; +import java.util.InputMismatchException; import java.util.Scanner; public class Main { - private static Scanner s = new Scanner(System.in); - private static int customers; - private static String product; - private static double price; - static Calculator c; static ArrayList products = new ArrayList(); - static String enough; public static void main(String[] args) { + boolean correctCustomersNumberEntered = false; + int customers = 0; + Scanner s = new Scanner(System.in); System.out.println("На скольких человек необходимо разделить счёт?"); - customers = s.nextInt(); + do { + try { + customers = s.nextInt(); + correctCustomersNumberEntered = true; + + + } catch (InputMismatchException e) { + System.out.println ("Это некорректное значение гостей. Введите корректное количество гостей."); + s.nextLine(); + } + } while (!correctCustomersNumberEntered); + while (customers <= 1) { - System.out.println("Это некорректное значение для подсчёта"); - System.out.println("Введите корректное количество гостей. Если гостей меньше двух, то расчет не требуется"); + System.out.println("Это некорректное значение для подсчёта.\nВведите корректное количество гостей. Если гостей меньше двух, то расчет не требуется"); customers = s.nextInt(); } - c = new Calculator(customers, 0); - outer: + outer: while (true) { System.out.println("Укажите наименование товара:"); - product = s.next(); + String product = s.next(); System.out.println("Укажите стоимость товара в формате 'рубли.копейки' [10.45, 11.40]:"); - try { - price = s.nextDouble(); - } catch (Exception e) { - System.out.println("Товар должен быть указан в корректном формате 'рубли.копейки' [10.45, 11.40]"); - break; - } + double price = 0; + boolean correctPriceEntered = false; + do { + + try { + price = s.nextDouble(); + if (price <= 0) { + System.out.println("Некорректный ввод.Товар должен быть указан в корректном формате 'рубли.копейки' [10.45, 11.40]"); + s.nextLine(); + } else { + correctPriceEntered = true; + } + } catch (InputMismatchException e) { + System.out.println("Товар должен быть указан в корректном формате 'рубли.копейки' [10.45, 11.40]"); + s.nextLine(); + } + } while (!correctPriceEntered); + Product p = new Product(product, price); - c.addProduct(p); + Calculator.addProduct(p); products.add(p); + + String enough; do { System.out.println("Добавить еще товаров в заказ (Да/Нет)?"); enough = s.next(); @@ -43,12 +64,15 @@ public static void main(String[] args) { for (int i = 0; i < products.size(); i++) { System.out.println(products.get(i).getLabel()); } - System.out.println("Каждый поситетль должен заплатить" + " " + c.calculateBill()); + System.out.println("Каждый поситетль должен заплатить" + " " + Calculator.calculateBill(customers)); break outer; - } else if (enough.equalsIgnoreCase("да")){ + } else if (enough.equalsIgnoreCase("да")) { break; + } else { + System.out.println("Некорректный ввод"); } - } while (!enough.equalsIgnoreCase("нет") || !enough.equalsIgnoreCase("да")); + + } while (true); } } }

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