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 21a84789ba1e2c46317afa873bdf5c37eb3bebf2 Mon Sep 17 00:00:00 2001 From: dmitr Date: 2022年8月15日 16:55:34 +0300 Subject: [PATCH 3/4] =?UTF-8?q?1=20=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B4=D0=B0=D1=87=D0=B8=201=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20(=D0=9F?= =?UTF-8?q?=D0=BE=D0=B7=D1=8F=D0=B1=D0=B8=D0=BD=20=D0=AE=D1=80=D0=B8=D0=B9?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 + .idea/compiler.xml | 6 ++ .idea/gradle.xml | 18 ++++++ .idea/misc.xml | 9 +++ .idea/vcs.xml | 6 ++ src/main/java/Main.java | 111 ++++++++++++++++++++++++++++++++++++- src/main/java/Product.java | 9 +++ 7 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/Product.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..c9e5c01 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5d10be7 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + +
    + + \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..bab96eb 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,113 @@ +import java.util.Locale; +import java.util.Scanner; + public class Main { public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + // Начало программы + int amountMan = inputAmountMan(); // Получение количества человек для расчета из метода + System.out.println("Количество человек для расчета - " + amountMan + "."); + float sumProductPrice = requestProduct(); // Получение общей суммы всех товаров из метода + float everyonePays = sumProductPrice / amountMan; // Получение расчета на каждого человека + String rublesEveryonePays = nameRubles(everyonePays); // Получение падежа слова "рубль" из метода + String messageTemplate = "Каждому счет обойдется в %.2f %s."; + String finalOutputText = String.format(messageTemplate, everyonePays, rublesEveryonePays); + finalOutputText = finalOutputText.replace(',', '.'); // Вывод точки вместо запятой (как указано в задании) + System.out.println(finalOutputText); + } + + private static int inputAmountMan() { // Метод ввода количества человек для разделения счета + // Объявление метода, возвращеющего значение типа int + System.out.println("Введите количество человек, на которое будет разделен счет"); + Scanner scanner = new Scanner(System.in); // Создание объекта "сканер" + + int inputMan; // Объявление переменной "количество человек" + while (true) { // Запускаем бесконечный цикл + + if (scanner.hasNextInt()) { // Условие, если введено значение типа int + inputMan = scanner.nextInt(); // Ввод с клавиатуры количества человек для разделения счета + + if (inputMan> 1) { // Если введено корректное значение больше 1 + break; // Выходим из бесконечного цикла + } else if (inputMan == 1) { // Если пользователь вводит 1 + System.out.println("Программа производит расчеты при количестве человек от 2-х и больше, попробуйте еще раз."); + } else if (inputMan < 0) { // Еслм пользователь вводит число меньше 1 + System.out.println("Некорректное значение, попробуйте еще раз."); + } + } else { // Если пользователь ввел с клавиатуры символ или значение типа отличного от int + System.out.println("Не балуйтесь с вводом значений. Вводите целое неотрицательное число, большое или равное 2"); + System.out.println("\nВведите количество человек, на которое будет разделен счет"); + scanner.nextLine(); // переход на следующую строку считывания для того, чтобы избежать бесконечного вывода + } + } + return inputMan; + } + public static float calcPrice () { // Метод ввода стоимости товара + Scanner scanner = new Scanner(System.in).useLocale(Locale.US); // Создание объекта "сканер" + float priceProduct; // Переменная стоимости продукта + System.out.println("Введите стоимость продукта в формате 'рубли.копейки' [10.45, 11.40]:"); + while (true) { // Запускаем бесконечный цикл + if (scanner.hasNextFloat()) { // Условие, если введено значение типа float + priceProduct = scanner.nextFloat(); // Ввод с клавиатуры стоимости товара + if (priceProduct> 0.00) { // Если введено корректное значение больше 0.00 + break; // Выходим из бесконечного цикла + } else if (priceProduct <= 0.00) { // Если пользователь вводит 0.00 + System.out.println("Некорректное значение, стоимость должна быть больше 0.00"); + } + } else { // Если пользователь ввел с клавиатуры некоректные значения + System.out.println("Не балуйтесь с вводом значений. Вводите дробное неотрицательное число, большое или равное 1 копейке (0.01)."); + scanner.nextLine(); // переход на следующую строку считывания для того, чтобы избежать бесконечного вывода + } + } + return priceProduct; + } + + public static float requestProduct() { // Метод подсчета общей стоимости товаров + + Scanner scanner = new Scanner(System.in);// Создание объекта "сканер" + String addedProduct = ""; // Объявление переменной "Добавленные товары" и присваивание "" + float priceProductOne; // Объявление переменной стоимости одного продукта + float sumPrice = 0.00F; // Объявление переменной "Общая сумма всех товаров" и присваивание "0.00" + String continueProgram; // Объявление переменной продолжения или завершения расчетов + while (true) { // Бесконечный цикл + System.out.println("Введите название товара"); + String nameProduct = scanner.nextLine(); // Ввод имени товара + priceProductOne = calcPrice(); // Вызов функции и получение стоимости товара + Product newProduct = new Product(nameProduct, priceProductOne); // Создание экземпляра класса product c атрибутами "Имя товара", "Стоимость" + System.out.println("Товар " + newProduct.productName + " успешно добавлен."); + addedProduct = addedProduct + "\n" + newProduct.productName + ";"; // Перечень всех добавленных продуктов + sumPrice = sumPrice + newProduct.productPrice; // Общая стоимость всех продуктов + System.out.println("Добавленные товары:" + addedProduct); + System.out.println("Общая сумма: " + sumPrice); + System.out.println("Хотите ли добавить еще один товар? (введите 'завершить' для расчета стоимости или любой другой символ для продолжения)"); + continueProgram = scanner.nextLine(); // Считываем желание пользователя завершить или не завершать программу + if (continueProgram.equalsIgnoreCase("Завершить")) { // Условие выхода из бесконечного цикла + break; // Выходим из бесконечного цикла + } + System.out.println("Продолжаем добавлять товары"); + } + return sumPrice; // Возвращение общей стоимости всех товаров + } + + public static String nameRubles (float sum) { // Метод определения падежа для слова "рубль" + + float finalNumberSum = (float) Math.floor(sum); // Округление в меньшую сторону + String nameRublesOut; // Объявление строки конечного падежа + // Вывод полученного падежа слова "рубль" + if (finalNumberSum>= 10.0 && finalNumberSum <= 20.0) { // Если на каждого человека от от 10 до 20 рублей + nameRublesOut = "рублей"; + } + else { // Иначе в зависимости от последней цифры в числе + finalNumberSum = finalNumberSum % 10; + if (finalNumberSum == 1.0) { + nameRublesOut = "рубль"; + } + else if (finalNumberSum>= 2.0 && finalNumberSum <= 4.0) + nameRublesOut = "рубля"; + else { + nameRublesOut = "рублей"; + } + } + return nameRublesOut; // То возвращяем "рублей" } } diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 0000000..f3ead44 --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,9 @@ +public class Product { + String productName; // Наименование товара + float productPrice; // Цена товара + + Product(String productName, float productPrice) { + this.productName = productName; + this.productPrice = productPrice; + } +} From 1ae10c56ed9872692338e85e1ef0c40ec10f72e0 Mon Sep 17 00:00:00 2001 From: dmitr Date: 2022年8月15日 18:06:29 +0300 Subject: [PATCH 4/4] =?UTF-8?q?2=20=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B4=D0=B0=D1=87=D0=B8=201=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20(=D0=9F?= =?UTF-8?q?=D0=BE=D0=B7=D1=8F=D0=B1=D0=B8=D0=BD=20=D0=AE=D1=80=D0=B8=D0=B9?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 + src/main/java/Main.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index c9e5c01..b220fcc 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ +