From 21a84789ba1e2c46317afa873bdf5c37eb3bebf2 Mon Sep 17 00:00:00 2001 From: dmitr Date: 2022年8月15日 16:55:34 +0300 Subject: [PATCH 1/2] =?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 2/2] =?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 @@ +