From 13c3fa6f25e67deae0d8347d29962c7619a83806 Mon Sep 17 00:00:00 2001 From: Andrei Semenov Date: Wed, 7 Feb 2024 20:15:50 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B8=D0=B9=20=D0=B2=D0=B0=D1=80?= =?UTF-8?q?=D0=B8=D0=B0=D0=BD=D1=82=20-=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D0=B0=D1=82=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=82=D0=B2=D1=83=D0=B5=D1=82=20=D0=A2=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 93 +++++++++++++++++++++++++++++++++++ src/main/java/Formatter.java | 23 +++++++++ src/main/java/Main.java | 30 ++++++++++- src/main/java/Product.java | 9 ++++ 4 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Calculator.java create mode 100644 src/main/java/Formatter.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 000000000..39706f76a --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,93 @@ +import java.util.ArrayList; +import java.util.Locale; +import java.util.Scanner; + +public class Calculator { + private final int numberOfFriends; + private final ArrayList products = new ArrayList(); + Scanner scanner = new Scanner(System.in).useLocale(Locale.ENGLISH); + + Calculator(int count) { + numberOfFriends = count; + } + + public void start() { + String name; + double price; + + do { + System.out.println("Введите название товара:"); + //scanner.nextLine(); + name = scanner.next(); + + while (true) { + System.out.println("Введите стоимость товара (рубли.копейки, цифрами):"); + //scanner.nextLine(); + if (scanner.hasNextDouble()) { + price = scanner.nextDouble(); + if (price> 0.0) { + break; + } else { + System.out.println("Стоимость товара не может быть отрицательной."); + scanner.nextLine(); + } + } else { + System.out.println("Это не число. Введите корректное значение - рубли.копейки, цифрами. Например, 2.5"); + scanner.nextLine(); + } + } + + Product newProduct = new Product(name, price); + products.add(newProduct); + System.out.println("Новый товар " + + newProduct.productName + + " стоимостью " + + Formatter.doubleFormat(newProduct.productPrice) + + " " + + Formatter.currencyName(newProduct.productPrice) + " успешно добавлен."); + System.out.println("Общая стоимость добавленных товаров: "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); + + System.out.println("Хотите добавить еще один товар?"); + } while (!scanner.next().trim().equalsIgnoreCase("завершить")); + + printProductsList(products); + System.out.println("Общая сумма чека составляет "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); + System.out.println("Каждый ваш друг должен заплатить " + +Formatter.doubleFormat(getAmountForFriend(numberOfFriends,products)) + + " "+ Formatter.currencyName(getAmountForFriend(numberOfFriends,products))); + } + + private double sumOrder(ArrayList products){ + double result = 0.0; + if (products.size()> 0) { + for (Product currentProduct : products) { + result = result + currentProduct.productPrice; + } + } else { + System.out.println("Ваш счёт пуст, суммировать нечего."); + } + return result; + } + + private double getAmountForFriend(int numbers, ArrayList products){ + if (sumOrder(products)> 0.0) { + return sumOrder(products) / numbers; + } else { + System.out.println("Ваш счёт пуст, делить нечего."); + return 0.0; + } + } + + private void printProductsList(ArrayList products){ + if (products.size()> 0) { + System.out.println("Добавленные товары:"); + for (Product currentProduct: products) { + System.out.println(currentProduct.productName + + " стоимостью " + +Formatter.doubleFormat(currentProduct.productPrice) + +" " + +Formatter.currencyName(currentProduct.productPrice)); + } + } + } +} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java new file mode 100644 index 000000000..3e9a25f3e --- /dev/null +++ b/src/main/java/Formatter.java @@ -0,0 +1,23 @@ +import static java.lang.Math.floor; + +import java.util.Locale; + +public class Formatter { + public static String currencyName (double value){ + String result; + int floorValue = (int)floor(value); + + if ((floorValue != 11) && (floorValue%10 == 1)){ + result = "рубль"; + } else if (((floorValue%10> 1)&&(floorValue%10 < 5)) && ((floorValue < 12) || (floorValue> 14))) { + result = "рубля"; + } else { + result = "рублей"; + } + return result; + } + + public static String doubleFormat (double value){ + return String.format(Locale.ENGLISH,"%.2f", value); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..26eb28a03 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,34 @@ +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + + Scanner scanner = new Scanner(System.in); + int numbersOfFriends; + Calculator calc; + + System.out.println("Приветствую вас!"); + System.out.println("На сколько человек сегодня хотите разделить счёт?"); + + while (true) if (scanner.hasNextInt()) { + numbersOfFriends = scanner.nextInt(); + if (numbersOfFriends> 1) { + System.out.println("Отлично! Делим счёт на " + numbersOfFriends + " человек!"); + calc = new Calculator(numbersOfFriends); + calc.start(); + break; + } else if (numbersOfFriends == 1) { + System.out.println("Вам не нужно делить счёт, вы оплачиваете его полностью сами."); + break; + } else { + System.out.println("Количество друзей не может быть меньше или равным 0. Укажите положительное целое число:"); + scanner.nextLine(); + } + } else { + System.out.println("Введенное значение не является целым числом. Повторите ввод:"); + scanner.nextLine(); + } + + scanner.close(); } } \ No newline at end of file diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 000000000..4073669e5 --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,9 @@ +public class Product { + String productName; + double productPrice; + + Product (String name, double price) { + this.productName = name.trim(); + this.productPrice = price; + } +} From 6218774222ad6ee0d9333797c03aa8c2c31e4e68 Mon Sep 17 00:00:00 2001 From: Andrei Semenov Date: Wed, 7 Feb 2024 21:24:23 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20-=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D1=8C=D1=8E=D0=B5=D1=80=D1=83.=20=D0=9D=D0=B5?= =?UTF-8?q?=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BE=D0=BF=D1=82=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=B8=20=D0=B5=D1=89=D0=B5=20=D0=BD=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D1=80=D0=B0=D0=B7=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 63 ++++++++++++++++++++--------------- src/main/java/Formatter.java | 12 ++++--- src/main/java/Main.java | 13 +++++--- src/main/java/Product.java | 9 ++--- 4 files changed, 58 insertions(+), 39 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 39706f76a..054d47223 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,62 +1,71 @@ +//Calculator описывает объект калькулятора, который запрашивает и сохраняет объекты Product +//от пользователя и выводит список и сумму товаров + import java.util.ArrayList; -import java.util.Locale; import java.util.Scanner; public class Calculator { - private final int numberOfFriends; + private final int numberOfFriends; //количество друзей, на которых делим счет + private final Scanner scanner; //объект Scanner инициализируется в конструкторе, чтобы не плодить лишние объекты в памяти. private final ArrayList products = new ArrayList(); - Scanner scanner = new Scanner(System.in).useLocale(Locale.ENGLISH); - Calculator(int count) { - numberOfFriends = count; + Calculator(int count, Scanner scanner) { + this.numberOfFriends = count; //получаем количество друзей + this.scanner = scanner; //получаем ссылку на уже существующий объект Scanner } - public void start() { - String name; - double price; + public void start() { //основной метод класса, собирает данные и выводит результат + String name; //название товара + double price; //цена товара + //пока пользователь не введет слово "завершить", собираем данные о товарах do { + scanner.nextLine(); //добавлено для обнуления сканера, если предыдущий ввод был с ошибкой System.out.println("Введите название товара:"); - //scanner.nextLine(); - name = scanner.next(); + name = scanner.next(); //ввод строки не требует проверки (теоретически можно заморочиться, но выходит за рамки ТЗ) + //тут запрашиваем цену товара и ждем ввода корректного значения while (true) { - System.out.println("Введите стоимость товара (рубли.копейки, цифрами):"); - //scanner.nextLine(); + scanner.nextLine(); //добавлено для обнуления сканера, если предыдущий ввод был с ошибкой + System.out.println("Введите стоимость товара (рубли.копейки, цифрами, через точку):"); if (scanner.hasNextDouble()) { price = scanner.nextDouble(); if (price> 0.0) { break; } else { - System.out.println("Стоимость товара не может быть отрицательной."); - scanner.nextLine(); + System.out.println("Стоимость товара не может быть отрицательной или равной нулю."); } } else { System.out.println("Это не число. Введите корректное значение - рубли.копейки, цифрами. Например, 2.5"); - scanner.nextLine(); } } - Product newProduct = new Product(name, price); - products.add(newProduct); + products.add(new Product(name,price)); //добавляем товар в коллекцию System.out.println("Новый товар " - + newProduct.productName + + name + " стоимостью " - + Formatter.doubleFormat(newProduct.productPrice) + + Formatter.doubleFormat(price) + " " - + Formatter.currencyName(newProduct.productPrice) + " успешно добавлен."); + + Formatter.currencyName(price) + " успешно добавлен."); System.out.println("Общая стоимость добавленных товаров: "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); System.out.println("Хотите добавить еще один товар?"); } while (!scanner.next().trim().equalsIgnoreCase("завершить")); - printProductsList(products); - System.out.println("Общая сумма чека составляет "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); - System.out.println("Каждый ваш друг должен заплатить " - +Formatter.doubleFormat(getAmountForFriend(numberOfFriends,products)) - + " "+ Formatter.currencyName(getAmountForFriend(numberOfFriends,products))); + //выводим итоги всей работы калькулятора, if добавил скорее для порядка, так как к этому моменту не вижу варианта, что коллекция пуста + if (products.size()> 0){ + printProductsList(products); + System.out.println("Общая сумма чека составляет "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); + System.out.println("Каждый ваш друг должен заплатить " + +Formatter.doubleFormat(getAmountForFriend(numberOfFriends,products)) + + " "+ Formatter.currencyName(getAmountForFriend(numberOfFriends,products))); + } else { + System.out.println("По неизвестной причине ваш список товаров пуст.\nЗапустите приложение повторно и внесите в список товары и их цену."); + } + } + //Метод суммирует стоимость всех товаров private double sumOrder(ArrayList products){ double result = 0.0; if (products.size()> 0) { @@ -69,15 +78,17 @@ private double sumOrder(ArrayList products){ return result; } + //Метод выводит сумму, которую должен заплатить каждый участник вечеринки private double getAmountForFriend(int numbers, ArrayList products){ if (sumOrder(products)> 0.0) { return sumOrder(products) / numbers; } else { - System.out.println("Ваш счёт пуст, делить нечего."); + System.out.println("У вас нулевой счёт, делить нечего."); return 0.0; } } + //Метод выводит список всех сохраненных продуктов и их стоимость построчно private void printProductsList(ArrayList products){ if (products.size()> 0) { System.out.println("Добавленные товары:"); diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index 3e9a25f3e..178bc3977 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -1,11 +1,15 @@ +//Класс Formatter имеет два статичных метода - выводит название валюты (рубли) в правильном склонении +//и выводит десятичную дробь в виде строки с двумя знаками после десятичного делителя import static java.lang.Math.floor; - import java.util.Locale; public class Formatter { - public static String currencyName (double value){ + public static String currencyName (double value){ //Возвращает слово "рубль" в правильном виде в зависимости от количества рублей + //РЕВЬЮЕРУ: в ТЗ к данному заданию четко прописано, как должно склоняться слово "рубль": без учета копеек! То есть, "1.35 рубль", а не "1.35 рублей". + //Метод работает именно так, как указано в ТЗ + String result; - int floorValue = (int)floor(value); + int floorValue = (int)floor(value); //округляем дробь до целого, используется floor для уверенности, что округлит как надо if ((floorValue != 11) && (floorValue%10 == 1)){ result = "рубль"; @@ -17,7 +21,7 @@ public static String currencyName (double value){ return result; } - public static String doubleFormat (double value){ + public static String doubleFormat (double value){ //Возвращает дробь в виде строки в нужном формате return String.format(Locale.ENGLISH,"%.2f", value); } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 26eb28a03..4901907f2 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,23 +1,26 @@ +import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - int numbersOfFriends; + Scanner scanner = new Scanner(System.in).useLocale(Locale.ENGLISH); Calculator calc; System.out.println("Приветствую вас!"); System.out.println("На сколько человек сегодня хотите разделить счёт?"); + //Проверяем, что введено правильное значение числа друзей while (true) if (scanner.hasNextInt()) { - numbersOfFriends = scanner.nextInt(); + int numbersOfFriends = scanner.nextInt(); + + //если число друзей верного формата, запускаем калькулятор и весь процесс if (numbersOfFriends> 1) { System.out.println("Отлично! Делим счёт на " + numbersOfFriends + " человек!"); - calc = new Calculator(numbersOfFriends); + calc = new Calculator(numbersOfFriends, scanner); calc.start(); break; - } else if (numbersOfFriends == 1) { + } else if (numbersOfFriends == 1) {//если указал число 1, то выдаем соответствующее уведомление и завершаем программу System.out.println("Вам не нужно делить счёт, вы оплачиваете его полностью сами."); break; } else { diff --git a/src/main/java/Product.java b/src/main/java/Product.java index 4073669e5..232404f72 100644 --- a/src/main/java/Product.java +++ b/src/main/java/Product.java @@ -1,9 +1,10 @@ +//Класс Product описывает один товар с названием и стоимостью public class Product { - String productName; - double productPrice; + String productName; //название товара + double productPrice; //стоимость товара в виде десятичного значения Product (String name, double price) { - this.productName = name.trim(); - this.productPrice = price; + this.productName = name.trim(); //обрезаем лишние пробелы и инициализируем название продукта + this.productPrice = price; //инициализируем цену продукта (без округления!) } } From 636dd94c632e20ee4498cb8695e9f6f1b2708047 Mon Sep 17 00:00:00 2001 From: Andrei Semenov Date: 2024年2月10日 17:20:05 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=A2=D1=80=D0=B5=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 70 ++++++++++++++++++++--------------- src/main/java/Formatter.java | 2 +- src/main/java/Friends.java | 29 +++++++++++++++ src/main/java/Main.java | 33 +++-------------- 4 files changed, 76 insertions(+), 58 deletions(-) create mode 100644 src/main/java/Friends.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 054d47223..976b48b35 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -18,41 +18,54 @@ public void start() { //основной метод класса, собирае String name; //название товара double price; //цена товара - //пока пользователь не введет слово "завершить", собираем данные о товарах do { - scanner.nextLine(); //добавлено для обнуления сканера, если предыдущий ввод был с ошибкой - System.out.println("Введите название товара:"); - name = scanner.next(); //ввод строки не требует проверки (теоретически можно заморочиться, но выходит за рамки ТЗ) + name = enterProductName(scanner); + price = enterProductPrice(scanner); + addNewProduct(products, name,price); + System.out.println("Хотите добавить еще один товар?"); + } while (!scanner.next().trim().equalsIgnoreCase("завершить")); - //тут запрашиваем цену товара и ждем ввода корректного значения - while (true) { - scanner.nextLine(); //добавлено для обнуления сканера, если предыдущий ввод был с ошибкой - System.out.println("Введите стоимость товара (рубли.копейки, цифрами, через точку):"); - if (scanner.hasNextDouble()) { - price = scanner.nextDouble(); - if (price> 0.0) { - break; - } else { - System.out.println("Стоимость товара не может быть отрицательной или равной нулю."); - } + //выводим итоги всей работы калькулятора, if добавил скорее для порядка, так как к этому моменту не вижу варианта, что коллекция пуста + showResult(products); + } + + private String enterProductName(Scanner scanner){ + scanner.nextLine(); //добавлено для обнуления сканера, если предыдущий ввод был с ошибкой + System.out.println("Введите название товара:"); + return scanner.next(); //ввод строки не требует проверки (теоретически можно заморочиться, но выходит за рамки ТЗ) + } + + private double enterProductPrice(Scanner scanner){ + double price; + while (true) { + scanner.nextLine(); //добавлено для обнуления сканера, если предыдущий ввод был с ошибкой + System.out.println("Введите стоимость товара (рубли.копейки, цифрами, через запятую):"); + if (scanner.hasNextDouble()) { + price = scanner.nextDouble(); + if (price> 0.0) { + break; } else { - System.out.println("Это не число. Введите корректное значение - рубли.копейки, цифрами. Например, 2.5"); + System.out.println("Стоимость товара не может быть отрицательной или равной нулю."); } + } else { + System.out.println("Это не число. Введите корректное значение - рубли.копейки, цифрами. Например, 2,5"); } + } + return price; + } - products.add(new Product(name,price)); //добавляем товар в коллекцию - System.out.println("Новый товар " - + name - + " стоимостью " - + Formatter.doubleFormat(price) - + " " - + Formatter.currencyName(price) + " успешно добавлен."); - System.out.println("Общая стоимость добавленных товаров: "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); - - System.out.println("Хотите добавить еще один товар?"); - } while (!scanner.next().trim().equalsIgnoreCase("завершить")); + private void addNewProduct(ArrayList products, String name, double price){ + products.add(new Product(name,price)); //добавляем товар в коллекцию + System.out.println("Новый товар " + + name + + " стоимостью " + + Formatter.doubleFormat(price) + + " " + + Formatter.currencyName(price) + " успешно добавлен."); + System.out.printf("Общая стоимость добавленных товаров: %s %s%n", Formatter.doubleFormat(sumOrder(products)), Formatter.currencyName(sumOrder(products))); + } - //выводим итоги всей работы калькулятора, if добавил скорее для порядка, так как к этому моменту не вижу варианта, что коллекция пуста + private void showResult(ArrayList products){ if (products.size()> 0){ printProductsList(products); System.out.println("Общая сумма чека составляет "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products))); @@ -62,7 +75,6 @@ public void start() { //основной метод класса, собирае } else { System.out.println("По неизвестной причине ваш список товаров пуст.\nЗапустите приложение повторно и внесите в список товары и их цену."); } - } //Метод суммирует стоимость всех товаров diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index 178bc3977..0261bb2d4 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -22,6 +22,6 @@ public static String currencyName (double value){ //Возвращает сло } public static String doubleFormat (double value){ //Возвращает дробь в виде строки в нужном формате - return String.format(Locale.ENGLISH,"%.2f", value); + return String.format("%.2f", value); } } diff --git a/src/main/java/Friends.java b/src/main/java/Friends.java new file mode 100644 index 000000000..5763e478b --- /dev/null +++ b/src/main/java/Friends.java @@ -0,0 +1,29 @@ +import java.util.Scanner; + +public class Friends { + + public static int enterFriends(Scanner scanner){ + System.out.println("Приветствую вас!"); + System.out.println("На сколько человек сегодня хотите разделить счёт?"); + int numbersOfFriends; + //Проверяем, что введено правильное значение числа друзей + while (true) if (scanner.hasNextInt()) { + //если число друзей верного формата, запускаем калькулятор и весь процесс + numbersOfFriends = scanner.nextInt(); + if (numbersOfFriends> 1) { + System.out.println("Отлично! Делим счёт на " + numbersOfFriends + " друзей!"); + break; + } else if (numbersOfFriends == 1) {//если указал число 1, то выдаем соответствующее уведомление и завершаем программу + System.out.println("Вам не нужно делить счёт, вы оплачиваете его полностью сами."); + break; + } else { + System.out.println("Количество друзей не может быть меньше или равным 0. Укажите положительное целое число:"); + scanner.nextLine(); + } + } else { + System.out.println("Введенное значение не является целым числом. Повторите ввод:"); + scanner.nextLine(); + } + return numbersOfFriends; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 4901907f2..7160b8664 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,37 +1,14 @@ -import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) { - Scanner scanner = new Scanner(System.in).useLocale(Locale.ENGLISH); - Calculator calc; - - System.out.println("Приветствую вас!"); - System.out.println("На сколько человек сегодня хотите разделить счёт?"); - - //Проверяем, что введено правильное значение числа друзей - while (true) if (scanner.hasNextInt()) { - int numbersOfFriends = scanner.nextInt(); - - //если число друзей верного формата, запускаем калькулятор и весь процесс - if (numbersOfFriends> 1) { - System.out.println("Отлично! Делим счёт на " + numbersOfFriends + " человек!"); - calc = new Calculator(numbersOfFriends, scanner); - calc.start(); - break; - } else if (numbersOfFriends == 1) {//если указал число 1, то выдаем соответствующее уведомление и завершаем программу - System.out.println("Вам не нужно делить счёт, вы оплачиваете его полностью сами."); - break; - } else { - System.out.println("Количество друзей не может быть меньше или равным 0. Укажите положительное целое число:"); - scanner.nextLine(); - } - } else { - System.out.println("Введенное значение не является целым числом. Повторите ввод:"); - scanner.nextLine(); + Scanner scanner = new Scanner(System.in); + int counterOfFriends = Friends.enterFriends(scanner); + if (counterOfFriends> 1){ + Calculator calc = new Calculator(counterOfFriends,scanner); + calc.start(); } - scanner.close(); } } \ No newline at end of file From d9332e27a6015dd00a35c6e1fe54f8566fb924e4 Mon Sep 17 00:00:00 2001 From: Andrei Semenov Date: 2024年2月10日 17:21:46 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20-=20?= =?UTF-8?q?=D0=B2=D1=81=D1=91=20=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE,=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D0=B1=D0=B8=D1=82=D0=BE=20=D0=BD=D0=B0=20=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B8,=20=D0=BB=D0=B5=D0=B3=D0=BA=D0=BE=20=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D0=BA=D0=B0=D0=BA?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=B4=D0=BE,=20=D0=B1=D0=B5=D0=B7=20=D0=B3?= =?UTF-8?q?=D0=BB=D1=8E=D0=BA=D0=BE=D0=B2=20=D1=81=20=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Formatter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index 0261bb2d4..a9c341ce5 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -1,7 +1,6 @@ //Класс Formatter имеет два статичных метода - выводит название валюты (рубли) в правильном склонении //и выводит десятичную дробь в виде строки с двумя знаками после десятичного делителя import static java.lang.Math.floor; -import java.util.Locale; public class Formatter { public static String currencyName (double value){ //Возвращает слово "рубль" в правильном виде в зависимости от количества рублей From fd3ecef16c10ad11c126bf6b6ef611603d61ac68 Mon Sep 17 00:00:00 2001 From: Andrei Semenov Date: 2024年2月14日 21:53:36 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4,=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D1=8E=D1=89=D0=B8=D0=B9=20=D1=81?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2=D0=BE=20=D1=80=D1=83=D0=B1=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D0=B2=D0=B5=D1=80=D0=BD=D0=BE=D0=BC=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=B4=D0=B5=D0=B6=D0=B5.=20=D0=9A=D0=BE=D0=B4=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BA=D0=BE=D1=80=D0=BE=D1=87=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D1=83=D0=BD=D0=B8=D0=B2=D0=B5=D1=80=D1=81=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Formatter.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index a9c341ce5..e71ccec01 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -7,17 +7,15 @@ public static String currencyName (double value){ //Возвращает сло //РЕВЬЮЕРУ: в ТЗ к данному заданию четко прописано, как должно склоняться слово "рубль": без учета копеек! То есть, "1.35 рубль", а не "1.35 рублей". //Метод работает именно так, как указано в ТЗ - String result; - int floorValue = (int)floor(value); //округляем дробь до целого, используется floor для уверенности, что округлит как надо - - if ((floorValue != 11) && (floorValue%10 == 1)){ - result = "рубль"; - } else if (((floorValue%10> 1)&&(floorValue%10 < 5)) && ((floorValue < 12) || (floorValue> 14))) { - result = "рубля"; + if ((int)value%100>= 11 && (int)value%100 <= 14){ + return "рублей"; } else { - result = "рублей"; + switch (((int)value%10)) { + case 1: return "рубль"; + case 2, 3, 4: return "рубля"; + default: return "рублей"; + } } - return result; } public static String doubleFormat (double value){ //Возвращает дробь в виде строки в нужном формате From 39c819d312487e57b5276f2770bc3ffc70f03e11 Mon Sep 17 00:00:00 2001 From: Andrei Semenov Date: 2024年2月14日 21:55:20 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4,=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D1=8E=D1=89=D0=B8=D0=B9=20=D1=81?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2=D0=BE=20=D1=80=D1=83=D0=B1=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=B2=20=D0=B2=D0=B5=D1=80=D0=BD=D0=BE=D0=BC=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=B4=D0=B5=D0=B6=D0=B5.=20=D0=9A=D0=BE=D0=B4=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BA=D0=BE=D1=80=D0=BE=D1=87=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D1=83=D0=BD=D0=B8=D0=B2=D0=B5=D1=80=D1=81=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Formatter.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index e71ccec01..4df2c276a 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -1,6 +1,5 @@ //Класс Formatter имеет два статичных метода - выводит название валюты (рубли) в правильном склонении //и выводит десятичную дробь в виде строки с двумя знаками после десятичного делителя -import static java.lang.Math.floor; public class Formatter { public static String currencyName (double value){ //Возвращает слово "рубль" в правильном виде в зависимости от количества рублей @@ -10,11 +9,11 @@ public static String currencyName (double value){ //Возвращает сло if ((int)value%100>= 11 && (int)value%100 <= 14){ return "рублей"; } else { - switch (((int)value%10)) { - case 1: return "рубль"; - case 2, 3, 4: return "рубля"; - default: return "рублей"; - } + return switch (((int) value % 10)) { + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; } }

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