diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 0000000..4126564 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,75 @@ +import java.util.Locale; +import java.util.Scanner; + +public class Calculator { //класс для хранения и подсчёта + String listOfProducts; //список товаров + double productPrice; //общая стоимость товаров + + public Calculator() { //конструктор + listOfProducts = ""; //задаём значения по умолчанию для списка товаров + productPrice = 0.0; //задаём значения по умолчанию для общей стоимости товаров + } + + public void addProduct() { //метод добавления товаров + while (true) { + Scanner in = new Scanner(System.in).useLocale(Locale.US); + System.out.println("Введите название товара: "); + String productName = in.nextLine(); //сохраняем название товара + if (productName.equalsIgnoreCase("Завершить")) { //пользователь завершает ввод списка товаров + break; + } + listOfProducts += productName + "\n"; //в список продуктов добавляем название товаров + + System.out.println("Введите стоимость в формате: 'рубли.копейки' [10.45, 11.40]"); + double price = inputPrice(); //вызываем метод ввода стоимости + productPrice += price; //в общую стоимость добавляем стоимость введёного товара + System.out.println("Товар успешно добавлен! Хотите добавить ещё один товар? Если да, то продолжайте писать ваш список. Если нет, то напишите \"Завершить\""); + } + } + + public double inputPrice() { //метод ввода стоимости товара + while (true) { + Scanner in = new Scanner(System.in).useLocale(Locale.US); + + if (in.hasNextDouble()) { //проверка на число + double price = in.nextDouble(); //считываем стоимость, которую ввёл пользователь + + if (price> 0) { //проверка на то, что пользователь вводит стоимость больше 0 + return price; + } else { + System.out.println("Стоимость товара должна быть больше 0!"); + } + } else { + System.out.println("Извините, но это явно не число!"); + } + } + } + + public static String getRubleAddition(double price) //метод, который склоняет рубль + { + int num = (int)Math.floor(price); //округляем стоимость товара к наименьшему целому числу + int preLastDigit = num % 100 / 10; //нахожу предпоследнюю цифру + if (preLastDigit == 1) //предпоследняя цифра равна 1 + { + return "рублей"; + } + + switch (num % 10) //смотрим последнюю цифру + { + case 1: + return "рубль"; + case 2: + case 3: + case 4: + return "рубля"; + default: + return "рублей"; + } + } + + public void printInfo(int persona) { //метод вывода информации + System.out.println("Добавленные товары: \n" + listOfProducts); + System.out.printf("Стоимость товаров для каждого по отдельности: %.2f %s \n", productPrice / persona, getRubleAddition(productPrice / persona)); + System.out.printf("Общая стоимость товаров: %.2f %s \n" , productPrice, getRubleAddition(productPrice)); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..0dd521a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,30 @@ +import java.util.Scanner; + public class Main { public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + Calculator calc = new Calculator(); + + while (true) { + Scanner in = new Scanner(System.in); //считывает, сколько человек написал пользователь + System.out.println("На сколько человек необходимо разделить счёт?"); + + if (in.hasNextInt()) { //проверяем ввёл ли пользователь целое число. Без букв, дробей и символов. + int numberOfPeople = in.nextInt(); //получаем и сохраняем в переменную количество человек введённое пользователем + + if (numberOfPeople == 1) { //пользователь вводит 1 человека + System.out.println("Введите больше 1 человека, если внутри вас не сидит второе Я!"); + } else if (numberOfPeople < 1) { //пользователь вводит число меньше 1 + System.out.println("Дабы программа заработала... Введите больше 1 человека!"); + } else { //мы гордимся пользователем и продолжаем работу + System.out.println("Сейчас всё посчитаем!"); + calc.addProduct(); + calc.printInfo(numberOfPeople); + break; + } + } else { + System.out.println("Извините, но это явно не число! Введите цифру больше 1."); + } + } } }

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