From 8f258392f7d72748156eb3fd01d2c49ab987af70 Mon Sep 17 00:00:00 2001 From: Nikolai Sukhoverkhov Date: Sat, 3 Dec 2022 23:53:50 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9D=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=83=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D1=82=D0=BE=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20?= =?UTF-8?q?=D1=81=D1=87=D0=B5=D1=82=D0=B0=20=D0=BF=D0=BE=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=BD=D1=83=20=D0=BC=D0=B5=D0=B6=D0=B4=D1=83=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=BE=D0=BD=D0=B0=D0=BC=D0=B8.=20=D0=A1=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Cal?= =?UTF-8?q?culator,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D1=87=D0=B8=D1=82=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=89=D1=83=D1=8E=20=D0=B2=D0=B2=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=83=D1=8E=20=D1=81=D1=83=D0=BC=D0=BC=D1=83=20?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=B0=D1=80=D0=BE=D0=B2,=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D1=82=20=D0=B5=D1=91=20=D0=BD=D0=B0=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BD=D1=8B=D0=B5=20=D1=87=D0=B0=D1=81=D1=82=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D1=83=20=D0=BF=D0=B5=D1=80=D1=81=D0=BE=D0=BD,=20=D0=B0?= =?UTF-8?q?=20=D1=82=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=BE=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D1=8F=D0=B5=D1=82=20=D0=BD=D0=B0=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BB=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=80=D1=83=D0=B1=D0=BB=D1=8C=20=D0=B8=20=D0=BA=D0=BE=D0=BF?= =?UTF-8?q?=D0=B5=D0=B9=D0=BA=D0=B0=20=D0=B2=20=D0=B7=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20=D0=BE=D1=82=20?= =?UTF-8?q?=D0=B2=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8.=20=D0=A1?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=20ItemsBasket,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=D0=B5=D1=82=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=20=D0=B2=20=D1=81=D0=B5=D0=B1=D1=8F=20=D0=B2=D1=81=D1=8E?= =?UTF-8?q?=20=D0=BA=D0=BE=D1=80=D0=B7=D0=B8=D0=BD=D1=83=20=D0=B2=D0=B2?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=80=D0=BE=D0=B2=20=D0=B7=D0=B0=20=D0=B2=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=8B=D1=82=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 + .idea/codeStyles/Project.xml | 123 +++++++++++++++++++++++++++ .idea/codeStyles/codeStyleConfig.xml | 5 ++ .idea/compiler.xml | 6 ++ .idea/gradle.xml | 18 ++++ .idea/misc.xml | 10 +++ .idea/vcs.xml | 6 ++ src/main/java/Calculator.java | 68 +++++++++++++++ src/main/java/ItemsBasket.java | 20 +++++ src/main/java/Main.java | 103 ++++++++++++++++++++-- 10 files changed, 357 insertions(+), 5 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml 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/Calculator.java create mode 100644 src/main/java/ItemsBasket.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/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..7643783 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file 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..6cec569 --- /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..a47d29e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ 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/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 0000000..847c1ec --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,68 @@ +public class Calculator { + static float itemsSum = 0.00f; + static float costPerPerson; + + public static void sumCostsOfItems (float cost) { + itemsSum = itemsSum + cost; + } + + public static float calculateCostPerPerson (int personsQuantity) { + float costPerPerson = itemsSum / (float)personsQuantity; + return costPerPerson; + } + + public static String findRightRoubleWord (int roubles){ + String roubleName; + int lastDigit = -1; + int lastTwoDigits = -11; + lastTwoDigits = roubles - (roubles / 100) * 100; + if (lastTwoDigits>= 11 && lastTwoDigits <= 14) { + roubleName = "рублей"; + return roubleName; + } + lastDigit = roubles - (roubles / 10) * 10; + if (lastDigit == 1) { + roubleName = "рубль"; + return roubleName; + } + else if (lastDigit>= 2 && lastDigit <= 4){ + roubleName = "рубля"; + return roubleName; + } + else if ((lastDigit>= 5 && lastDigit <= 9)||(lastDigit == 0)){ + roubleName = "рублей"; + return roubleName; + } else { + roubleName = "Unknown"; + return roubleName; + } + } + + public static String findRightPennyWord (int penny){ + String pennyName; + int lastDigit = -1; + int lastTwoDigits = -11; + + lastTwoDigits = penny - (penny / 100) * 100; + if (lastTwoDigits>= 11 && lastTwoDigits <= 14) { + pennyName = "копеек"; + return pennyName; + } + lastDigit = penny - (penny / 10) * 10; + if (lastDigit == 1) { + pennyName = "копейка"; + return pennyName; + } + else if (lastDigit>= 2 && lastDigit <= 4){ + pennyName = "копейки"; + return pennyName; + } + else if ((lastDigit>= 5 && lastDigit <= 9)||(lastDigit == 0)){ + pennyName = "копеек"; + return pennyName; + } + pennyName = "Unknown"; + return pennyName; + } +} + diff --git a/src/main/java/ItemsBasket.java b/src/main/java/ItemsBasket.java new file mode 100644 index 0000000..d6a0080 --- /dev/null +++ b/src/main/java/ItemsBasket.java @@ -0,0 +1,20 @@ +public class ItemsBasket { + static String itemsNames = "None"; + + ItemsBasket() { + } + + public static void addItemInBasket(String name) { + if (itemsNames.equals("None")) { + itemsNames = name; + } + else { + itemsNames = itemsNames + ", " + name; + } + } + + public static void writeItemsFromBasket () { + System.out.println("Добавленные товары:\n"+itemsNames.replaceAll(", ","\n")); + } + } + diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..9b2db89 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,101 @@ -public class Main { +import java.util.InputMismatchException; +import java.util.Scanner; +public class Main { public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + float itemCost = -1.1f; + int personsQuantity = -1; + while (personsQuantity < 0) {personsQuantity = inputPersonsQuantity();} // получем колчиество персон + String itemName = inputItemName(1); // получаем имя первого товара + while (itemCost < 0) {itemCost = inputItemCost(itemName);} // получаем стоимость товара + new ItemsBasket(); + new Calculator(); + + ItemsBasket.addItemInBasket(itemName); // записали Item в Basket + Calculator.sumCostsOfItems(itemCost); // приплюсовали Cost + int roubles = (int) (itemCost); + int pennies = (int) ((itemCost % 1)*100); + String roubleName = Calculator.findRightRoubleWord (roubles); + String pennyName = Calculator.findRightPennyWord (pennies); + + System.out.printf("Вы успешно добавили товар %s стоимостью %d %s %d %s%n", itemName,roubles,roubleName,pennies,pennyName ); + while (true) { + itemName = inputItemName(2); // получаем имя следующего товара + if (itemName.equalsIgnoreCase("ЗАВЕРШИТЬ")) {break;} // проверяем команду Завершить + itemCost = -1.1f; // сброс предыдущего значения для вхождения в цикл + while (itemCost < 0) {itemCost = inputItemCost(itemName);}// получаем стоимость следующего товара + ItemsBasket.addItemInBasket(itemName); // записали Item в Basket + Calculator.sumCostsOfItems(itemCost); // приплюсовали Cost + roubles = (int) (itemCost); + pennies = (int) ((itemCost % 1)*100); + roubleName = Calculator.findRightRoubleWord (roubles); + pennyName = Calculator.findRightPennyWord (pennies); + System.out.printf("Вы успешно добавили товар %s стоимостью %d %s %d %s%n", itemName,roubles,roubleName,pennies,pennyName ); + } + + float resultCalculator = Calculator.calculateCostPerPerson(personsQuantity); + ItemsBasket.writeItemsFromBasket(); + roubles = (int) (resultCalculator); + pennies = (int) ((resultCalculator % 1)*100); + roubleName = Calculator.findRightRoubleWord (roubles); + System.out.printf("Каждому нужно заплатить %d,%d %s%n",roubles,pennies,roubleName); + } + +//_____________________________________________________________________________________________ + + public static int inputPersonsQuantity() { + Scanner scanner = new Scanner(System.in); + int errorInt = -1; + System.out.println("Введите число персон, на которых разделить счет:"); + try { + int personsQuantity = scanner.nextInt(); // После запуска программа должна спрашивать у пользователя, на скольких человек необходимо разделить счёт. + while (personsQuantity <= 1) { + System.out.println("Вы ввели неправильное число персон."); + System.out.println("Снова введите число персон, на которых будем делить счет. Персон должно быть две и больше:"); + personsQuantity = scanner.nextInt(); + } + return personsQuantity; + } catch (InputMismatchException e) { + System.out.println("Ошибочный ввод. Попробуйте ещё раз ввести число персон в виде целого положительного числа, например 10:"); + return errorInt; + } + } + + public static String inputItemName(int type) { + Scanner scanner = new Scanner(System.in); + String itemName; + switch (type) { + case 1: + System.out.println("Введите название товара из чека:"); + itemName = scanner.next(); + itemName = itemName.trim(); + return itemName; + case 2: + System.out.println("Если хотите завершить ввод напишите \"Завершить\" или введите название следующего товара из чека:"); + itemName = scanner.next(); + itemName = itemName.trim(); + return itemName; + } + itemName = "None"; + return itemName; + } + + public static float inputItemCost(String itemName) { + Scanner scanner = new Scanner(System.in); + System.out.println("Введите стоимость товара " + itemName + " в формате 0,00 в рублях с копейками:"); + float itemCost; + float errorFloat = -1.10f; + + try { + itemCost = scanner.nextFloat(); + if (itemCost < 0) { + System.out.println("Вы ввели стоимость не в правильном фомате. Попробуйте ещё раз, например 10,45"); + return errorFloat; + } + } catch (InputMismatchException e) { + System.out.println("Вы ввели стоимость не в правильном фомате. Попробуйте ещё раз, например 10,45"); + return errorFloat; + } + return itemCost; } -} +} \ No newline at end of file From d0449cc2c79ac0f19f0a628a2f317088932a4004 Mon Sep 17 00:00:00 2001 From: Nikolai Sukhoverkhov Date: Tue, 6 Dec 2022 22:29:33 +0300 Subject: [PATCH 2/2] =?UTF-8?q?Release=20notes=20:)=20-=20=D1=83=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D1=8B=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=D0=BC=D0=B8;=20-=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B5=20Calculator=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B5=D0=B9=20=D1=86?= =?UTF-8?q?=D0=B8=D1=84=D1=80=D1=8B=20=D0=B8=20=D0=B4=D0=B2=D1=83=D1=85=20?= =?UTF-8?q?=D1=86=D0=B8=D1=84=D1=80=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=B0=20=D0=BE=D1=81=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D0=BA=20=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BE=D1=82=20100=20=D0=B8=2010=20=D1=81=D0=BE=D0=BE=D1=82?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D0=BE;?= =?UTF-8?q?=20-=20=D1=81=D0=BE=D0=BA=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=87=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=20"=D1=80=D1=83=D0=B1=D0=BB=D1=8C",=20=D1=83=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8E=20=D0=BA=D0=BE=D0=BF=D0=B5=D0=B5=D0=BA?= =?UTF-8?q?,=20=D1=82.=D0=BA.=20=D0=BD=D0=B5=20=D1=82=D1=80=D0=B5=D0=B1?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BB=D0=BE=D1=81=D1=8C=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=A2=D0=97;=20-=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=B4=D0=B0=D1=80=D1=82=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D1=82=D0=BE=D0=B9=20=D0=BA=D0=BE=D0=BD=D1=81?= =?UTF-8?q?=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80=20ItemsBasket;=20-?= =?UTF-8?q?=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D1=85=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20ItemsBask?= =?UTF-8?q?et=20=D0=B8=20Calculator;=20-=20=D0=B4=D0=BB=D1=8F=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D1=81=20try=20catch?= =?UTF-8?q?=20=D0=BD=D0=B0=20hasNextInt=20=D0=B8=20hasNextFloat;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 53 +++++------------------- src/main/java/ItemsBasket.java | 12 ++---- src/main/java/Main.java | 74 ++++++++++++++++------------------ 3 files changed, 49 insertions(+), 90 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 847c1ec..bb997d5 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,68 +1,37 @@ public class Calculator { - static float itemsSum = 0.00f; + static float itemsSum; static float costPerPerson; - public static void sumCostsOfItems (float cost) { + public static void sumCostsOfItems(float cost) { itemsSum = itemsSum + cost; } - public static float calculateCostPerPerson (int personsQuantity) { - float costPerPerson = itemsSum / (float)personsQuantity; + public static float calculateCostPerPerson(int personsQuantity) { + costPerPerson = itemsSum / (float) personsQuantity; return costPerPerson; } - public static String findRightRoubleWord (int roubles){ + public static String findRightRoubleWord(int roubles) { String roubleName; - int lastDigit = -1; - int lastTwoDigits = -11; - lastTwoDigits = roubles - (roubles / 100) * 100; + int lastDigit; + int lastTwoDigits; + lastTwoDigits = roubles % 100; if (lastTwoDigits>= 11 && lastTwoDigits <= 14) { roubleName = "рублей"; return roubleName; } - lastDigit = roubles - (roubles / 10) * 10; + lastDigit = roubles % 10; if (lastDigit == 1) { roubleName = "рубль"; return roubleName; - } - else if (lastDigit>= 2 && lastDigit <= 4){ + } else if (lastDigit>= 2 && lastDigit <= 4) { roubleName = "рубля"; return roubleName; - } - else if ((lastDigit>= 5 && lastDigit <= 9)||(lastDigit == 0)){ - roubleName = "рублей"; - return roubleName; } else { - roubleName = "Unknown"; + roubleName = "рублей"; return roubleName; } } - public static String findRightPennyWord (int penny){ - String pennyName; - int lastDigit = -1; - int lastTwoDigits = -11; - - lastTwoDigits = penny - (penny / 100) * 100; - if (lastTwoDigits>= 11 && lastTwoDigits <= 14) { - pennyName = "копеек"; - return pennyName; - } - lastDigit = penny - (penny / 10) * 10; - if (lastDigit == 1) { - pennyName = "копейка"; - return pennyName; - } - else if (lastDigit>= 2 && lastDigit <= 4){ - pennyName = "копейки"; - return pennyName; - } - else if ((lastDigit>= 5 && lastDigit <= 9)||(lastDigit == 0)){ - pennyName = "копеек"; - return pennyName; - } - pennyName = "Unknown"; - return pennyName; - } } diff --git a/src/main/java/ItemsBasket.java b/src/main/java/ItemsBasket.java index d6a0080..10fe53c 100644 --- a/src/main/java/ItemsBasket.java +++ b/src/main/java/ItemsBasket.java @@ -1,20 +1,16 @@ public class ItemsBasket { static String itemsNames = "None"; - ItemsBasket() { - } - public static void addItemInBasket(String name) { if (itemsNames.equals("None")) { itemsNames = name; - } - else { + } else { itemsNames = itemsNames + ", " + name; } } - public static void writeItemsFromBasket () { - System.out.println("Добавленные товары:\n"+itemsNames.replaceAll(", ","\n")); - } + public static void writeItemsFromBasket() { + System.out.println("Добавленные товары:\n" + itemsNames.replaceAll(", ", "\n")); } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 9b2db89..728eb0f 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,64 +1,56 @@ -import java.util.InputMismatchException; import java.util.Scanner; public class Main { public static void main(String[] args) { - float itemCost = -1.1f; - int personsQuantity = -1; - while (personsQuantity < 0) {personsQuantity = inputPersonsQuantity();} // получем колчиество персон + int personsQuantity = inputPersonsQuantity(); // получем колчиество персон String itemName = inputItemName(1); // получаем имя первого товара - while (itemCost < 0) {itemCost = inputItemCost(itemName);} // получаем стоимость товара - new ItemsBasket(); - new Calculator(); + float itemCost = inputItemCost(itemName); // получаем стоимость товара ItemsBasket.addItemInBasket(itemName); // записали Item в Basket Calculator.sumCostsOfItems(itemCost); // приплюсовали Cost int roubles = (int) (itemCost); - int pennies = (int) ((itemCost % 1)*100); - String roubleName = Calculator.findRightRoubleWord (roubles); - String pennyName = Calculator.findRightPennyWord (pennies); + String roubleName = Calculator.findRightRoubleWord(roubles); - System.out.printf("Вы успешно добавили товар %s стоимостью %d %s %d %s%n", itemName,roubles,roubleName,pennies,pennyName ); + System.out.printf("Вы успешно добавили товар %s стоимостью %.2f %s%n", itemName, itemCost, roubleName); while (true) { itemName = inputItemName(2); // получаем имя следующего товара - if (itemName.equalsIgnoreCase("ЗАВЕРШИТЬ")) {break;} // проверяем команду Завершить + if (itemName.equalsIgnoreCase("ЗАВЕРШИТЬ")) { + break; + } // проверяем команду Завершить itemCost = -1.1f; // сброс предыдущего значения для вхождения в цикл - while (itemCost < 0) {itemCost = inputItemCost(itemName);}// получаем стоимость следующего товара + while (itemCost < 0) { + itemCost = inputItemCost(itemName); + }// получаем стоимость следующего товара ItemsBasket.addItemInBasket(itemName); // записали Item в Basket Calculator.sumCostsOfItems(itemCost); // приплюсовали Cost roubles = (int) (itemCost); - pennies = (int) ((itemCost % 1)*100); - roubleName = Calculator.findRightRoubleWord (roubles); - pennyName = Calculator.findRightPennyWord (pennies); - System.out.printf("Вы успешно добавили товар %s стоимостью %d %s %d %s%n", itemName,roubles,roubleName,pennies,pennyName ); + roubleName = Calculator.findRightRoubleWord(roubles); + System.out.printf("Вы успешно добавили товар %s стоимостью %.2f %s%n", itemName, itemCost, roubleName); } float resultCalculator = Calculator.calculateCostPerPerson(personsQuantity); ItemsBasket.writeItemsFromBasket(); roubles = (int) (resultCalculator); - pennies = (int) ((resultCalculator % 1)*100); - roubleName = Calculator.findRightRoubleWord (roubles); - System.out.printf("Каждому нужно заплатить %d,%d %s%n",roubles,pennies,roubleName); + roubleName = Calculator.findRightRoubleWord(roubles); + System.out.printf("Каждому нужно заплатить %.2f %s%n", resultCalculator, roubleName); } //_____________________________________________________________________________________________ public static int inputPersonsQuantity() { Scanner scanner = new Scanner(System.in); - int errorInt = -1; System.out.println("Введите число персон, на которых разделить счет:"); - try { - int personsQuantity = scanner.nextInt(); // После запуска программа должна спрашивать у пользователя, на скольких человек необходимо разделить счёт. - while (personsQuantity <= 1) { - System.out.println("Вы ввели неправильное число персон."); - System.out.println("Снова введите число персон, на которых будем делить счет. Персон должно быть две и больше:"); + int personsQuantity; + while (true) { + if (scanner.hasNextInt()) { personsQuantity = scanner.nextInt(); + break; + } else { + System.out.println("Ошибочный ввод. Попробуйте ещё раз ввести число персон в виде целого положительного числа, например 10,45"); + scanner.next(); } - return personsQuantity; - } catch (InputMismatchException e) { - System.out.println("Ошибочный ввод. Попробуйте ещё раз ввести число персон в виде целого положительного числа, например 10:"); - return errorInt; } + return personsQuantity; } public static String inputItemName(int type) { @@ -84,18 +76,20 @@ public static float inputItemCost(String itemName) { Scanner scanner = new Scanner(System.in); System.out.println("Введите стоимость товара " + itemName + " в формате 0,00 в рублях с копейками:"); float itemCost; - float errorFloat = -1.10f; - - try { - itemCost = scanner.nextFloat(); - if (itemCost < 0) { + while (true) { + if (scanner.hasNextFloat()) { + itemCost = scanner.nextFloat(); + if (itemCost>= 0) { + break; + } else { + System.out.println("Вы ввели стоимость не в правильном фомате. Попробуйте ещё раз, например 10,45"); + scanner.next(); + } + } else { System.out.println("Вы ввели стоимость не в правильном фомате. Попробуйте ещё раз, например 10,45"); - return errorFloat; - } - } catch (InputMismatchException e) { - System.out.println("Вы ввели стоимость не в правильном фомате. Попробуйте ещё раз, например 10,45"); - return errorFloat; + scanner.next(); } + } return itemCost; } } \ No newline at end of file

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