From 8f0bd08f1e5e5bf94bd1a5cc3d9e278a1dcb3286 Mon Sep 17 00:00:00 2001 From: IgorZatsepilin Date: 2022年11月27日 15:40:11 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=201,=20=D0=97?= =?UTF-8?q?=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BB=D0=B8=D0=BD=20=D0=98=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 264 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 260 insertions(+), 4 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..674a43c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,264 @@ +import static java.lang.Math.floor; + +import java.math.BigDecimal; +import java.util.Scanner; + + public class Main { + public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + String name; //название продукта + double price;// стоимость продукта + int peopleAmount; //кол-во человек + + Product newProduct = new Product(); //создаем экземпляр класса Продукт для записи данных + System.out.println("На скольких человек необходимо разделить счёт?"); + + + do { //цикл ввода и проверки кол-ва человек + Scanner scanner = new Scanner(System.in); + + while (!scanner.hasNextInt()) { //проверка ввода корректного значения Int + System.out.println("Введенное значение некорректно."); + System.out.println("На скольких человек необходимо разделить счёт ?"); + scanner.next(); + } + peopleAmount = scanner.nextInt(); + if (peopleAmount == 1) { + System.out.println("Ошибка! Количество человек не может быть равно 1, так как в этом случае нет смысла ничего считать и делить."); + System.out.println("Введите корректное число. На скольких человек необходимо разделить счёт?"); + } + if (peopleAmount < 1) { + System.out.println("Ошибка! Количество человек не может быть отрицательным или нулевым."); + System.out.println("Введите корректное число. На скольких человек необходимо разделить счёт?"); + } + if (peopleAmount> 1) { + System.out.println("Отлично! Число человек = " + peopleAmount); + } + + } while (peopleAmount <= 1); // окончание цикла ввода и проверки кол-ва человек + do { // полный цикл ввода названия и стоимости товара + System.out.println("Введите название товара:"); + Scanner scanner = new Scanner(System.in); + name = scanner.nextLine(); + while (name.trim().equals("")) { //проверка пустого ввода + System.out.println("Вы ничего не ввели. Введите название товара:"); + name = scanner.nextLine(); + } + newProduct.nameList = newProduct.nameList + name + "\n"; //добавляем введенный товар в список товаров + + do { // цикл ввода стоимости и проверки формата ввода + System.out.println("Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"); + Scanner scannerPrice = new Scanner(System.in); + while (!scannerPrice.hasNextDouble()) { //проверка на корректность введенного формата Дробное значение + System.out.println("Введенное значение некорректно."); + System.out.println("Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"); + scannerPrice.next(); + } + price = scannerPrice.nextDouble(); + + int digitsAfterDot = BigDecimal.valueOf(price).scale(); //определяем кол-во знаков после запятой + if (digitsAfterDot == 2) { //проверка на кол-во знаков после запятой в соответствии с требуемым форматом (два знака после запятой) + break; + } + System.out.println("Введенное значение некорректно. Кол-во знаков после запятой не равно 2."); + } while (true); // окончание цикл ввода стоимости и проверки формата ввода + + newProduct.sum = newProduct.sum + price; //добавляем стоимость текущего товара к суммарной стоимости товаров + System.out.println("Товар добавлен в калькулятор. Хотите ли добавить еще один товар? Введите любой символ (если хотите) или Завершить (если не хотите)"); + Scanner scanner1 = new Scanner(System.in); + String addNewProduct = scanner1.nextLine(); + String strLower = addNewProduct.toLowerCase(); //приводим введенное строковое значение к нижнему регистру + if (strLower.equals("завершить")) { //проверяем "завершить" + break; + } + } while (true); // закончен полный цикл ввода товаров и стоимости + + System.out.println("Добавленные товары:"); + System.out.println(newProduct.nameList); //выводим список товаров + newProduct.sumPerPerson = newProduct.sum / peopleAmount; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); //+ "флор: " + newProduct.z + ", numDigits: " + newProduct.numDigits + ", один знак: " + newProduct.y + ", два знака: " + newProduct.x); + //ТеСТ + newProduct.sumPerPerson = 0; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + + newProduct.sumPerPerson = 1; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 2; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 3; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 4; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 5; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 10; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 11; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 12; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + + newProduct.sumPerPerson = 19; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 20; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 21; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 22; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 25; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 30; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 100; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 101; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 102; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 105; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 110; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 111; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 112; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 115; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 120; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 121; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 122; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 125; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + newProduct.sumPerPerson = 130; // вычисляем сумму на человека + //определяем падеж слова "рубль": + newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + + } } -} + + + class Product { + int bezDrobnoyInt, twoLastDigits, oneLastDigit; //сумма на человека интовая, две последних цифры суммы на человека, одна последняя цифра суммы на человека + String nameList = ""; //список товаров + double sum, sumPerPerson; //общая сумма товаров, сумма на человека + String padezh; //падеж написания слова "рубль" + + + static String definePadezh(double sumPerPerson, int twoLastDigits, int oneLastDigit, int bezDrobnoyInt) { + int padezhVar=1; //вариант падежа. Если 1 то рубль, если 2 то рубля, если 3 то рублей + double bezDrobnoy = floor(sumPerPerson); //отбрасываем дробную часть + bezDrobnoyInt = (int) bezDrobnoy; //приводим к целочисленному типу + oneLastDigit = bezDrobnoyInt % 10; //определяем последнию цифру + twoLastDigits = bezDrobnoyInt % 100; //определяем две последних цифры + + if (oneLastDigit == 0) { + padezhVar = 3; + } + if (oneLastDigit == 1) { + padezhVar = 1; + } + if (((oneLastDigit> 1) & (oneLastDigit < 5))) { + padezhVar = 2; + } + if ((oneLastDigit> 4) & (oneLastDigit <= 9)) { + padezhVar = 3;; + } + + if ((twoLastDigits> 4) & (twoLastDigits < 21)) { + padezhVar = 3; + } + switch (padezhVar){ + case(1): + return " рубль."; + + case(2): + return " рубля."; + + case(3): + return " рублей."; + + + } + + + return " error."; + } + + + } + + + + + + + + + + + + From e1f14fb27b0a1c0491a593912d90307673254f34 Mon Sep 17 00:00:00 2001 From: IgorZatsepilin Date: 2022年11月29日 14:07:22 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=201,=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BB=D0=B8=D0=BD=20=D0=98?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D1=8C.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20#1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 225 +++++++++++----------------------------- 1 file changed, 63 insertions(+), 162 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 674a43c..d15b54e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -6,64 +6,21 @@ public class Main { - public static void main(String[] args) { String name; //название продукта double price;// стоимость продукта int peopleAmount; //кол-во человек + Product newProduct = new Product(); //создаем экземпляр класса Продукт для записи данных - System.out.println("На скольких человек необходимо разделить счёт?"); - do { //цикл ввода и проверки кол-ва человек - Scanner scanner = new Scanner(System.in); + peopleAmount = peopleAmountInputCheck (); //ввод и проверка формата ввода кол-ва человек + do{ + name = inputNameFormatCheck (); //ввод и проерка формата ввода названия продукта + newProduct.nameList = newProduct.nameList + name + "\n"; //добавляем введенный товар в список товаров - while (!scanner.hasNextInt()) { //проверка ввода корректного значения Int - System.out.println("Введенное значение некорректно."); - System.out.println("На скольких человек необходимо разделить счёт ?"); - scanner.next(); - } - peopleAmount = scanner.nextInt(); - if (peopleAmount == 1) { - System.out.println("Ошибка! Количество человек не может быть равно 1, так как в этом случае нет смысла ничего считать и делить."); - System.out.println("Введите корректное число. На скольких человек необходимо разделить счёт?"); - } - if (peopleAmount < 1) { - System.out.println("Ошибка! Количество человек не может быть отрицательным или нулевым."); - System.out.println("Введите корректное число. На скольких человек необходимо разделить счёт?"); - } - if (peopleAmount> 1) { - System.out.println("Отлично! Число человек = " + peopleAmount); - } - - } while (peopleAmount <= 1); // окончание цикла ввода и проверки кол-ва человек - do { // полный цикл ввода названия и стоимости товара - System.out.println("Введите название товара:"); - Scanner scanner = new Scanner(System.in); - name = scanner.nextLine(); - while (name.trim().equals("")) { //проверка пустого ввода - System.out.println("Вы ничего не ввели. Введите название товара:"); - name = scanner.nextLine(); - } - newProduct.nameList = newProduct.nameList + name + "\n"; //добавляем введенный товар в список товаров - - do { // цикл ввода стоимости и проверки формата ввода - System.out.println("Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"); - Scanner scannerPrice = new Scanner(System.in); - while (!scannerPrice.hasNextDouble()) { //проверка на корректность введенного формата Дробное значение - System.out.println("Введенное значение некорректно."); - System.out.println("Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"); - scannerPrice.next(); - } - price = scannerPrice.nextDouble(); - - int digitsAfterDot = BigDecimal.valueOf(price).scale(); //определяем кол-во знаков после запятой - if (digitsAfterDot == 2) { //проверка на кол-во знаков после запятой в соответствии с требуемым форматом (два знака после запятой) - break; - } - System.out.println("Введенное значение некорректно. Кол-во знаков после запятой не равно 2."); - } while (true); // окончание цикл ввода стоимости и проверки формата ввода + price = inputPriceFormatCheck (); //ввод и проверка формата ввода Стоимости продукта newProduct.sum = newProduct.sum + price; //добавляем стоимость текущего товара к суммарной стоимости товаров System.out.println("Товар добавлен в калькулятор. Хотите ли добавить еще один товар? Введите любой символ (если хотите) или Завершить (если не хотите)"); @@ -73,6 +30,7 @@ public static void main(String[] args) { if (strLower.equals("завершить")) { //проверяем "завершить" break; } + } while (true); // закончен полный цикл ввода товаров и стоимости System.out.println("Добавленные товары:"); @@ -81,121 +39,64 @@ public static void main(String[] args) { //определяем падеж слова "рубль": newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); //+ "флор: " + newProduct.z + ", numDigits: " + newProduct.numDigits + ", один знак: " + newProduct.y + ", два знака: " + newProduct.x); - //ТеСТ - newProduct.sumPerPerson = 0; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 1; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 2; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 3; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 4; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 5; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 10; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 11; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 12; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); + } + static int peopleAmountInputCheck (){ + String question = "На скольких человек необходимо разделить счёт?"; + String request = "Введите корректное число. "; + System.out.println(question); + do { + Scanner scanner = new Scanner(System.in); + + while (!scanner.hasNextInt()) { //проверка ввода корректного значения Int + System.out.println("Введенное значение некорректно.\n"+question); + scanner.next(); + } + int peopleAmountInput = scanner.nextInt(); + if (peopleAmountInput == 1) { + System.out.println("Ошибка! Количество человек не может быть равно 1, так как в этом случае нет смысла ничего считать и делить.\n"+request +" "+ question); + } + if (peopleAmountInput < 1) { + System.out.println("Ошибка! Количество человек не может быть отрицательным или нулевым.\n"+request +" "+ question); + } + if (peopleAmountInput> 1) { + System.out.println("Отлично! Число человек = " + peopleAmountInput); + return peopleAmountInput; + } + + } while (true); + } + static String inputNameFormatCheck () { +String request = "Введите название товара:"; + System.out.println(request); + Scanner scanner = new Scanner(System.in); + String InputName = scanner.nextLine(); + while (InputName.trim().equals("")) { //проверка пустого ввода + System.out.println("Вы ничего не ввели. "+request); + InputName = scanner.nextLine(); + } + return InputName; + } + + static Double inputPriceFormatCheck (){ + String question = "Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"; + do { + System.out.println(question); + Scanner scannerPrice = new Scanner(System.in); + while (!scannerPrice.hasNextDouble()) { //проверка на корректность введенного формата Дробное значение + System.out.println("Введенное значение некорректно.\n"+question); + scannerPrice.next(); + } + Double priceInput = scannerPrice.nextDouble(); + + int digitsAfterDot = BigDecimal.valueOf(priceInput).scale(); //определяем кол-во знаков после запятой + if (digitsAfterDot == 2) { //проверка на кол-во знаков после запятой в соответствии с требуемым форматом (два знака после запятой) + return priceInput; + + } + System.out.println("Введенное значение некорректно. Кол-во знаков после запятой не равно 2."); + } while (true); // окончание цикл ввода стоимости и проверки формата ввода - newProduct.sumPerPerson = 19; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 20; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 21; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 22; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 25; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 30; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 100; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 101; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 102; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 105; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 110; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 111; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 112; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 115; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 120; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 121; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 122; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 125; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); - newProduct.sumPerPerson = 130; // вычисляем сумму на человека - //определяем падеж слова "рубль": - newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); } } From f9948efa49a0de82b45b179b9f9efafe97fbe827 Mon Sep 17 00:00:00 2001 From: IgorZatsepilin Date: 2022年11月29日 15:56:19 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=201,=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BB=D0=B8=D0=BD=20=D0=98?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D1=8C.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20#1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 135 ++++++++++++++++++++-------------------- 1 file changed, 69 insertions(+), 66 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index d15b54e..8b52535 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -15,12 +15,12 @@ public static void main(String[] args) { Product newProduct = new Product(); //создаем экземпляр класса Продукт для записи данных - peopleAmount = peopleAmountInputCheck (); //ввод и проверка формата ввода кол-ва человек - do{ - name = inputNameFormatCheck (); //ввод и проерка формата ввода названия продукта - newProduct.nameList = newProduct.nameList + name + "\n"; //добавляем введенный товар в список товаров + peopleAmount = peopleAmountInputCheck(); //ввод и проверка формата ввода кол-ва человек + do { + name = inputNameFormatCheck(); //ввод и проерка формата ввода названия продукта + newProduct.nameList = newProduct.nameList + name + "\n"; //добавляем введенный товар в список товаров - price = inputPriceFormatCheck (); //ввод и проверка формата ввода Стоимости продукта + price = inputPriceFormatCheck(); //ввод и проверка формата ввода Стоимости продукта newProduct.sum = newProduct.sum + price; //добавляем стоимость текущего товара к суммарной стоимости товаров System.out.println("Товар добавлен в калькулятор. Хотите ли добавить еще один товар? Введите любой символ (если хотите) или Завершить (если не хотите)"); @@ -38,26 +38,27 @@ public static void main(String[] args) { newProduct.sumPerPerson = newProduct.sum / peopleAmount; // вычисляем сумму на человека //определяем падеж слова "рубль": newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); - System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); //+ "флор: " + newProduct.z + ", numDigits: " + newProduct.numDigits + ", один знак: " + newProduct.y + ", два знака: " + newProduct.x); + System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); } - static int peopleAmountInputCheck (){ - String question = "На скольких человек необходимо разделить счёт?"; - String request = "Введите корректное число. "; + + static int peopleAmountInputCheck() { + String question = "На скольких человек необходимо разделить счёт?"; + String request = "Введите корректное число. "; System.out.println(question); do { Scanner scanner = new Scanner(System.in); while (!scanner.hasNextInt()) { //проверка ввода корректного значения Int - System.out.println("Введенное значение некорректно.\n"+question); + System.out.println("Введенное значение некорректно.\n" + question); scanner.next(); } int peopleAmountInput = scanner.nextInt(); if (peopleAmountInput == 1) { - System.out.println("Ошибка! Количество человек не может быть равно 1, так как в этом случае нет смысла ничего считать и делить.\n"+request +" "+ question); + System.out.println("Ошибка! Количество человек не может быть равно 1, так как в этом случае нет смысла ничего считать и делить.\n" + request + " " + question); } if (peopleAmountInput < 1) { - System.out.println("Ошибка! Количество человек не может быть отрицательным или нулевым.\n"+request +" "+ question); + System.out.println("Ошибка! Количество человек не может быть отрицательным или нулевым.\n" + request + " " + question); } if (peopleAmountInput> 1) { System.out.println("Отлично! Число человек = " + peopleAmountInput); @@ -66,32 +67,33 @@ static int peopleAmountInputCheck (){ } while (true); } - static String inputNameFormatCheck () { -String request = "Введите название товара:"; - System.out.println(request); - Scanner scanner = new Scanner(System.in); - String InputName = scanner.nextLine(); - while (InputName.trim().equals("")) { //проверка пустого ввода - System.out.println("Вы ничего не ввели. "+request); - InputName = scanner.nextLine(); - } - return InputName; + + static String inputNameFormatCheck() { + String request = "Введите название товара:"; + System.out.println(request); + Scanner scanner = new Scanner(System.in); + String InputName = scanner.nextLine(); + while (InputName.trim().equals("")) { //проверка пустого ввода + System.out.println("Вы ничего не ввели. " + request); + InputName = scanner.nextLine(); } + return InputName; + } - static Double inputPriceFormatCheck (){ - String question = "Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"; + static Double inputPriceFormatCheck() { + String question = "Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"; do { System.out.println(question); Scanner scannerPrice = new Scanner(System.in); while (!scannerPrice.hasNextDouble()) { //проверка на корректность введенного формата Дробное значение - System.out.println("Введенное значение некорректно.\n"+question); + System.out.println("Введенное значение некорректно.\n" + question); scannerPrice.next(); } - Double priceInput = scannerPrice.nextDouble(); + Double priceInput = scannerPrice.nextDouble(); int digitsAfterDot = BigDecimal.valueOf(priceInput).scale(); //определяем кол-во знаков после запятой if (digitsAfterDot == 2) { //проверка на кол-во знаков после запятой в соответствии с требуемым форматом (два знака после запятой) - return priceInput; + return priceInput; } System.out.println("Введенное значение некорректно. Кол-во знаков после запятой не равно 2."); @@ -99,58 +101,59 @@ static Double inputPriceFormatCheck (){ } - } +} - class Product { - int bezDrobnoyInt, twoLastDigits, oneLastDigit; //сумма на человека интовая, две последних цифры суммы на человека, одна последняя цифра суммы на человека - String nameList = ""; //список товаров - double sum, sumPerPerson; //общая сумма товаров, сумма на человека - String padezh; //падеж написания слова "рубль" +class Product { + int bezDrobnoyInt, twoLastDigits, oneLastDigit; //сумма на человека интовая, две последних цифры суммы на человека, одна последняя цифра суммы на человека + String nameList = ""; //список товаров + double sum, sumPerPerson; //общая сумма товаров, сумма на человека + String padezh; //падеж написания слова "рубль" - static String definePadezh(double sumPerPerson, int twoLastDigits, int oneLastDigit, int bezDrobnoyInt) { - int padezhVar=1; //вариант падежа. Если 1 то рубль, если 2 то рубля, если 3 то рублей - double bezDrobnoy = floor(sumPerPerson); //отбрасываем дробную часть - bezDrobnoyInt = (int) bezDrobnoy; //приводим к целочисленному типу - oneLastDigit = bezDrobnoyInt % 10; //определяем последнию цифру - twoLastDigits = bezDrobnoyInt % 100; //определяем две последних цифры + static String definePadezh(double sumPerPerson, int twoLastDigits, int oneLastDigit, int bezDrobnoyInt) { + int padezhVar = 1; //вариант падежа. Если 1 то рубль, если 2 то рубля, если 3 то рублей + double bezDrobnoy = floor(sumPerPerson); //отбрасываем дробную часть + bezDrobnoyInt = (int) bezDrobnoy; //приводим к целочисленному типу + oneLastDigit = bezDrobnoyInt % 10; //определяем последнию цифру + twoLastDigits = bezDrobnoyInt % 100; //определяем две последних цифры - if (oneLastDigit == 0) { - padezhVar = 3; - } - if (oneLastDigit == 1) { - padezhVar = 1; - } - if (((oneLastDigit> 1) & (oneLastDigit < 5))) { - padezhVar = 2; - } - if ((oneLastDigit> 4) & (oneLastDigit <= 9)) { - padezhVar = 3;; - } - - if ((twoLastDigits> 4) & (twoLastDigits < 21)) { - padezhVar = 3; - } - switch (padezhVar){ - case(1): - return " рубль."; + if (oneLastDigit == 0) { + padezhVar = 3; + } + if (oneLastDigit == 1) { + padezhVar = 1; + } + if (((oneLastDigit> 1) & (oneLastDigit < 5))) { + padezhVar = 2; + } + if ((oneLastDigit> 4) & (oneLastDigit <= 9)) { + padezhVar = 3; + ; + } - case(2): - return " рубля."; + if ((twoLastDigits> 4) & (twoLastDigits < 21)) { + padezhVar = 3; + } + switch (padezhVar) { + case (1): + return " рубль."; - case(3): - return " рублей."; + case (2): + return " рубля."; + case (3): + return " рублей."; - } + default: + return " error."; + } - return " error."; - } + } - } +}

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