From e1f6893023e1e00e765909b127129a7ab6ece3d6 Mon Sep 17 00:00:00 2001 From: s-buvaka Date: 2022年7月27日 23:03:27 +0300 Subject: [PATCH 1/4] Remove classes --- src/main/java/Calculator.java | 22 ---------------- src/main/java/Formatter.java | 17 ------------- src/main/java/Item.java | 10 -------- src/main/java/Main.java | 47 +++-------------------------------- 4 files changed, 3 insertions(+), 93 deletions(-) delete mode 100644 src/main/java/Calculator.java delete mode 100644 src/main/java/Formatter.java delete mode 100644 src/main/java/Item.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java deleted file mode 100644 index 2fbc00d..0000000 --- a/src/main/java/Calculator.java +++ /dev/null @@ -1,22 +0,0 @@ -class Calculator { - - int friendsCount; - - String cart = "Добавленные товары:"; - double totalPrice = 0; - - Calculator(int friendsCount) { - this.friendsCount = friendsCount; - } - - void addItem(Item item) { - totalPrice += item.price; - cart = cart + "\n" + item.name; - - System.out.println(item.name + " в корзине"); - } - - double divideSum() { - return totalPrice / friendsCount; - } -} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java deleted file mode 100644 index 3f915b7..0000000 --- a/src/main/java/Formatter.java +++ /dev/null @@ -1,17 +0,0 @@ -public class Formatter { - - String formatValue(double price) { - double roundedValue = Math.floor(price); - if (roundedValue == 1) { - return "рубль"; - } else if (roundedValue>= 2 && roundedValue <= 4) { - return "рубля"; - } else { - return "рублей"; - } - } - - String roundResult(final double result) { - return String.format("%.2f", result); - } -} diff --git a/src/main/java/Item.java b/src/main/java/Item.java deleted file mode 100644 index fad8a4e..0000000 --- a/src/main/java/Item.java +++ /dev/null @@ -1,10 +0,0 @@ -class Item { - - String name; - double price; - - Item(String name, double price) { - this.name = name; - this.price = price; - } -} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 11ba5d3..a9198c4 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,49 +1,8 @@ -import java.util.Scanner; - public class Main { public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - int friendCount; - while (true) { - System.out.println("На сколько человек необходимо разделить счет?"); - friendCount = scanner.nextInt(); - - if (friendCount> 1) { - break; - } else if (friendCount == 1) { - System.out.println( - "Нет смысла делить сумму на одного человека. Давайте попробуем ввести другое значение, которое будет больше единицы."); - } else { - System.out.println("Неверное количество друзей. Значение должно быть болье единицы, давайте попробуем еще раз."); - } - } - - Calculator calculator = new Calculator(friendCount); - - while (true) { - System.out.println("Введите название товара"); - String name = scanner.next(); - - System.out.println("Введите стоимость товара в формате: 'рубли.копейки' [10.45, 11.40]"); - double price = scanner.nextDouble(); - - calculator.addItem(new Item(name, price)); - - System.out.println( - "Хотите добавить еще один товар? Введите любой символ для продолжения, либо 'Завершить' если больше нет товаров для добавления"); - String answer = scanner.next(); - - if (answer.equalsIgnoreCase("Завершить")) { - break; - } - } - - double result = calculator.divideSum(); - Formatter formatter = new Formatter(); - - System.out.println(calculator.cart); - System.out.println("Каждому человеку к оплате: " + formatter.roundResult(result) + " " + formatter.formatValue(result)); + // ваш код начнется здесь + // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости + System.out.println("Привет Мир"); } } From c521234c876be18b465b2fd45ef8a71d814fb7a9 Mon Sep 17 00:00:00 2001 From: s-buvaka Date: 2022年7月27日 23:13:52 +0300 Subject: [PATCH 2/4] Change project name --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 716abf2..be110bf 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,4 +12,4 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "BillCalculator" +rootProject.name = "Java-Module-Project" 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 3/4] 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 4/4] #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 によって変換されたページ (->オリジナル) /