diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..61a9130
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..b220fcc
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5d10be7
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 716abf2..be110bf 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,4 +12,4 @@ dependencyResolutionManagement {
mavenCentral()
}
}
-rootProject.name = "BillCalculator"
+rootProject.name = "Java-Module-Project"
diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java
deleted file mode 100644
index 2fbc00d..0000000
--- a/src/main/java/Calculator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-class Calculator {
-
- int friendsCount;
-
- String cart = "Добавленные товары:";
- double totalPrice = 0;
-
- Calculator(int friendsCount) {
- this.friendsCount = friendsCount;
- }
-
- void addItem(Item item) {
- totalPrice += item.price;
- cart = cart + "\n" + item.name;
-
- System.out.println(item.name + " в корзине");
- }
-
- double divideSum() {
- return totalPrice / friendsCount;
- }
-}
diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java
deleted file mode 100644
index 3f915b7..0000000
--- a/src/main/java/Formatter.java
+++ /dev/null
@@ -1,17 +0,0 @@
-public class Formatter {
-
- String formatValue(double price) {
- double roundedValue = Math.floor(price);
- if (roundedValue == 1) {
- return "рубль";
- } else if (roundedValue>= 2 && roundedValue <= 4) { - return "рубля"; - } else { - return "рублей"; - } - } - - String roundResult(final double result) { - return String.format("%.2f", result); - } -} diff --git a/src/main/java/Item.java b/src/main/java/Item.java deleted file mode 100644 index fad8a4e..0000000 --- a/src/main/java/Item.java +++ /dev/null @@ -1,10 +0,0 @@ -class Item { - - String name; - double price; - - Item(String name, double price) { - this.name = name; - this.price = price; - } -} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 11ba5d3..ba9648f 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,49 +1,114 @@ +import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - int friendCount; - while (true) { - System.out.println("На сколько человек необходимо разделить счет?"); - friendCount = scanner.nextInt(); - - if (friendCount> 1) {
- break;
- } else if (friendCount == 1) {
- System.out.println(
- "Нет смысла делить сумму на одного человека. Давайте попробуем ввести другое значение, которое будет больше единицы.");
- } else {
- System.out.println("Неверное количество друзей. Значение должно быть болье единицы, давайте попробуем еще раз.");
- }
- }
+ // Начало программы
+ int amountMan = inputAmountMan(); // Получение количества человек для расчета из метода
+ System.out.println("Количество человек для расчета - " + amountMan + ".");
+ float sumProductPrice = requestProduct(); // Получение общей суммы всех товаров из метода
+ float everyonePays = sumProductPrice / amountMan; // Получение расчета на каждого человека
+ String rublesEveryonePays = nameRubles(everyonePays); // Получение падежа слова "рубль" из метода
+ String messageTemplate = "Каждому счет обойдется в %.2f %s.";
+ String finalOutputText = String.format(messageTemplate, everyonePays, rublesEveryonePays);
+ finalOutputText = finalOutputText.replace(',', '.'); // Вывод точки вместо запятой (как указано в задании)
+ System.out.println(finalOutputText);
+ }
- Calculator calculator = new Calculator(friendCount);
+ private static int inputAmountMan() { // Метод ввода количества человек для разделения счета
+ // Объявление метода, возвращеющего значение типа int
+ System.out.println("Введите количество человек, на которое будет разделен счет");
+ Scanner scanner = new Scanner(System.in); // Создание объекта "сканер"
- while (true) {
- System.out.println("Введите название товара");
- String name = scanner.next();
+ int inputMan; // Объявление переменной "количество человек"
+ while (true) { // Запускаем бесконечный цикл
- System.out.println("Введите стоимость товара в формате: 'рубли.копейки' [10.45, 11.40]");
- double price = scanner.nextDouble();
+ if (scanner.hasNextInt()) { // Условие, если введено значение типа int
+ inputMan = scanner.nextInt(); // Ввод с клавиатуры количества человек для разделения счета
- calculator.addItem(new Item(name, price));
+ if (inputMan> 1) { // Если введено корректное значение больше 1
+ break; // Выходим из бесконечного цикла
+ } else if (inputMan == 1) { // Если пользователь вводит 1
+ System.out.println("Программа производит расчеты при количестве человек от 2-х и больше, попробуйте еще раз.");
+ }
+ else {
+ System.out.println("Некорректное значение, попробуйте еще раз.");
+ }
+ } else { // Если пользователь ввел с клавиатуры символ или значение типа отличного от int
+ System.out.println("Не балуйтесь с вводом значений. Вводите целое неотрицательное число, большое или равное 2");
+ System.out.println("\nВведите количество человек, на которое будет разделен счет");
+ scanner.nextLine(); // переход на следующую строку считывания для того, чтобы избежать бесконечного вывода
+ }
+ }
+ return inputMan;
+ }
+ public static float calcPrice () { // Метод ввода стоимости товара
+ Scanner scanner = new Scanner(System.in).useLocale(Locale.US); // Создание объекта "сканер"
+ float priceProduct; // Переменная стоимости продукта
+ System.out.println("Введите стоимость продукта в формате 'рубли.копейки' [10.45, 11.40]:");
+ while (true) { // Запускаем бесконечный цикл
+ if (scanner.hasNextFloat()) { // Условие, если введено значение типа float
+ priceProduct = scanner.nextFloat(); // Ввод с клавиатуры стоимости товара
+ if (priceProduct> 0.00) { // Если введено корректное значение больше 0.00
+ break; // Выходим из бесконечного цикла
+ } else if (priceProduct <= 0.00) { // Если пользователь вводит 0.00 + System.out.println("Некорректное значение, стоимость должна быть больше 0.00"); + } + } else { // Если пользователь ввел с клавиатуры некоректные значения + System.out.println("Не балуйтесь с вводом значений. Вводите дробное неотрицательное число, большое или равное 1 копейке (0.01)."); + scanner.nextLine(); // переход на следующую строку считывания для того, чтобы избежать бесконечного вывода + } + } + return priceProduct; + } - System.out.println( - "Хотите добавить еще один товар? Введите любой символ для продолжения, либо 'Завершить' если больше нет товаров для добавления"); - String answer = scanner.next(); + public static float requestProduct() { // Метод подсчета общей стоимости товаров - if (answer.equalsIgnoreCase("Завершить")) { - break; + Scanner scanner = new Scanner(System.in);// Создание объекта "сканер" + String addedProduct = ""; // Объявление переменной "Добавленные товары" и присваивание "" + float priceProductOne; // Объявление переменной стоимости одного продукта + float sumPrice = 0.00F; // Объявление переменной "Общая сумма всех товаров" и присваивание "0.00" + String continueProgram; // Объявление переменной продолжения или завершения расчетов + while (true) { // Бесконечный цикл + System.out.println("Введите название товара"); + String nameProduct = scanner.nextLine(); // Ввод имени товара + priceProductOne = calcPrice(); // Вызов функции и получение стоимости товара + Product newProduct = new Product(nameProduct, priceProductOne); // Создание экземпляра класса product c атрибутами "Имя товара", "Стоимость" + System.out.println("Товар " + newProduct.productName + " успешно добавлен."); + addedProduct = addedProduct + "\n" + newProduct.productName + ";"; // Перечень всех добавленных продуктов + sumPrice = sumPrice + newProduct.productPrice; // Общая стоимость всех продуктов + System.out.println("Добавленные товары:" + addedProduct); + System.out.println("Общая сумма: " + sumPrice); + System.out.println("Хотите ли добавить еще один товар? (введите 'завершить' для расчета стоимости или любой другой символ для продолжения)"); + continueProgram = scanner.nextLine(); // Считываем желание пользователя завершить или не завершать программу + if (continueProgram.equalsIgnoreCase("Завершить")) { // Условие выхода из бесконечного цикла + break; // Выходим из бесконечного цикла } + System.out.println("Продолжаем добавлять товары"); } + return sumPrice; // Возвращение общей стоимости всех товаров + } - double result = calculator.divideSum(); - Formatter formatter = new Formatter(); + public static String nameRubles (float sum) { // Метод определения падежа для слова "рубль" - System.out.println(calculator.cart); - System.out.println("Каждому человеку к оплате: " + formatter.roundResult(result) + " " + formatter.formatValue(result)); + float finalNumberSum = (float) Math.floor(sum); // Округление в меньшую сторону + String nameRublesOut; // Объявление строки конечного падежа + // Вывод полученного падежа слова "рубль" + if (finalNumberSum>= 10.0 && finalNumberSum <= 20.0) { // Если на каждого человека от от 10 до 20 рублей + nameRublesOut = "рублей"; + } + else { // Иначе в зависимости от последней цифры в числе + finalNumberSum = finalNumberSum % 10; + if (finalNumberSum == 1.0) { + nameRublesOut = "рубль"; + } + else if (finalNumberSum>= 2.0 && finalNumberSum <= 4.0)
+ nameRublesOut = "рубля";
+ else {
+ nameRublesOut = "рублей";
+ }
+ }
+ return nameRublesOut; // То возвращяем "рублей"
}
}
diff --git a/src/main/java/Product.java b/src/main/java/Product.java
new file mode 100644
index 0000000..f3ead44
--- /dev/null
+++ b/src/main/java/Product.java
@@ -0,0 +1,9 @@
+public class Product {
+ String productName; // Наименование товара
+ float productPrice; // Цена товара
+
+ Product(String productName, float productPrice) {
+ this.productName = productName;
+ this.productPrice = productPrice;
+ }
+}