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 index 2fbc00d..3e18389 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,22 +1,98 @@ -class Calculator { +import java.util.Scanner; - int friendsCount; - String cart = "Добавленные товары:"; - double totalPrice = 0; - - Calculator(int friendsCount) { - this.friendsCount = friendsCount; +public class Calculator { + // Метод добавления количества персон + public int addPerson(){ + int person = -1; + Scanner input = new Scanner(System.in); + while (person <= 0) { + System.out.println("Введите количество персон"); + if (input.hasNextInt()) { + person = input.nextInt(); + if (person <= 0) { + System.out.println("Вы ввели не верное количесво персон"); + } + } else { + System.out.println("Вы ввели ошибочное значение"); + input.next(); // Сдвиг сканера, иначе бесконечный цикл + } + } + return person; } - void addItem(Item item) { - totalPrice += item.price; - cart = cart + "\n" + item.name; + private Product addProduct(){ + String name = null; + double cost = -1; + Product product; + Scanner input = new Scanner(System.in); + System.out.println("Введите название продукта"); + // В название принимается любое значение + if(input.hasNext()) { + name = input.next(); + } - System.out.println(item.name + " в корзине"); + System.out.println("Введите стоимость продукта в формате \"рубли,копейки [10,45]\""); + while (cost <= 0) { + if (input.hasNextDouble()) { + cost = input.nextDouble(); + } + else { + System.out.println("Вы ввели не корректную стоимость"); + input.next(); // Сдвиг + } + } + System.out.println("Вы добавили товар: \"" + name + "\" стоимостью: " + cost); + product = new Product(name,cost); + return product; } - double divideSum() { - return totalPrice / friendsCount; + //Получить список всех продуктов и финальную стоимость + public double summProducts() + { + String productsAllPerson = ""; + double costAllPerson = 0; + Scanner input = new Scanner(System.in); + String answer; + Product product; + String strDialog; + while(true) { + System.out.println("Хотите ли Вы добавить новый продукт? (Да/Нет/Завершить)"); + if (input.hasNext()) { + answer = input.next(); + if (answer.equalsIgnoreCase("да")) { + product = addProduct(); + productsAllPerson = productsAllPerson + product.productName + "\n"; + costAllPerson = costAllPerson + product.cost; + } + if (answer.equalsIgnoreCase("нет") || answer.equalsIgnoreCase("завершить")) { + break; + } + } + } + strDialog = "Добавленные товары:\n%s\nОбщей стоимостью: %.2f %s"; + strDialog = String.format(strDialog, productsAllPerson, costAllPerson, getEnding(costAllPerson)); + System.out.println(strDialog); + return costAllPerson; + } + + // Склонение рубля + public String getEnding(double cost){ + int preLast = (int)Math.floor(cost) % 100 / 10; + if (preLast == 1){ + return "рублей"; + } + + switch ((int)Math.floor(cost) % 10){ + case 1: + return "рубль"; + case 2: + case 3: + case 4: + return "рубля"; + default: + return "рублей"; + } } } + 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..19352b3 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,49 +1,25 @@ -import java.util.Scanner; +//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("Неверное количество друзей. Значение должно быть болье единицы, давайте попробуем еще раз."); - } - } - - Calculator calculator = new Calculator(friendCount); - - while (true) { - System.out.println("Введите название товара"); - String name = scanner.next(); - - System.out.println("Введите стоимость товара в формате: 'рубли.копейки' [10.45, 11.40]"); - double price = scanner.nextDouble(); - - calculator.addItem(new Item(name, price)); + // ваш код начнется здесь + // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости + System.out.println("Привет!"); + Calculator calc = new Calculator(); + // Запрашиваем количество персон у пользователя + int person = calc.addPerson(); + // Запрашиваем список продуктов со стоимостью + double costAll = calc.summProducts(); + double cost = costAll / person; + String dialog = "Каждый из друзей должен заплатить: %.2f %s"; + dialog = String.format(dialog, cost, calc.getEnding(cost)); + System.out.println(dialog); + + System.out.println("Завершено!"); + } - System.out.println( - "Хотите добавить еще один товар? Введите любой символ для продолжения, либо 'Завершить' если больше нет товаров для добавления"); - String answer = scanner.next(); - if (answer.equalsIgnoreCase("Завершить")) { - break; - } - } - double result = calculator.divideSum(); - Formatter formatter = new Formatter(); - System.out.println(calculator.cart); - System.out.println("Каждому человеку к оплате: " + formatter.roundResult(result) + " " + formatter.formatValue(result)); - } } diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 0000000..633d910 --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,8 @@ +public class Product { + String productName; + double cost; + Product(String productName, double cost){ + this.productName = productName; + this.cost = cost; + } +}