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..43b4dbc --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,112 @@ +public class Calculator { + static String listProduct = ""; + double priceProduct; + static double sumPriceProduct = 0.00; + static int payer; + + //количество человек на чек (первый способ проверки ввода символов) + void addPeople(){ + System.out.println("На скольких человек необходимо разделить счёт?"); + while (true) { + try { + payer = Main.scanner.nextInt(); + if (payer <= 1) { + System.out.println("Количество человек меньше или равно одному.\nВведите число заново:"); + break; + } + } catch (Exception e) { + System.out.println("Вы ввели символ, а не число.\nПопробуйте ещё раз ввести количество человек"); + Main.scanner.next(); + } + } + } + + //количество человек на чек (второй способ проверки ввода символов) + void addPeople2(){ + System.out.println("На скольких человек необходимо разделить счёт?"); + + while (true) { + //вначале проверим число ли ввели вовсе + if (Main.scanner.hasNextInt()) { + payer = Main.scanner.nextInt(); + if (payer <= 1) { + System.out.println("Количество человек меньше или равно одному.\nВведите число заново:"); + break; + } + } else { + System.out.println("Вы ввели символ, а не число.\nПопробуйте ещё раз ввести количество человек"); + Main.scanner.next(); + } + } + } + + + //ввод товара + void addProduct() { + while (true) { + System.out.println("Наименование товара"); + String product = Main.scanner.next(); + + //проверка на завершение цикла добавление товара + if (product.equalsIgnoreCase("Завершить")) { + break; + } + + //вводим стоимость товара + System.out.println("Введите стоимость товара в руб."); + + //вначале проверим число ли ввели вовсе + if (Main.scanner.hasNextDouble()) { + priceProduct = Main.scanner.nextDouble(); + + //проверяем отрицательную стоимость + while (priceProduct < 0) { + System.out.println("У товара не может быть отрицательная стоимсть.\nВведите стоимость товара заново:"); + priceProduct = Main.scanner.nextDouble(); + } + + //сохраняем список товаров с ценой в виде текста чтобы потом вывести список + listProduct = listProduct + (product + (String.format(" - %.2f", priceProduct)) + " руб.\n"); + + //суммируем стоимость товара + sumPriceProduct = sumPriceProduct + priceProduct; + + System.out.println("Товар добавлен успешно.\nВведите новый товар или введите \"Завершить\", чтобы прекратить ввод товара.\n"); + } else { + System.out.println("Некорректный ввод числа.\nПопробуйте ещё раз.\n"); + Main.scanner.next(); + } + } + } + + //вывод чека + void viewListProduct() { + System.out.println("Добавленные товары:"); + System.out.println(listProduct); + System.out.println(String.format("Общая сумма чека - %.2f", sumPriceProduct) + GetRubleAddition() + "\n"); + //выводим результаты рачсчёта счёта на каждого + System.out.println("Каждый должен заплатить - " + Math.floor(Calculator.sumPriceProduct / Calculator.payer) + GetRubleAddition()); + } + + //метод определения склонения падежа + public static String GetRubleAddition() { + double amountForEach = Math.floor(Calculator.sumPriceProduct / Calculator.payer); + //с 10 по 19 всегда "рублей" + if (amountForEach % 100 >= 10 || amountForEach % 100 < 20) { + return " рублей"; + } + //остальные склонения по последней цифре + switch ((int) (amountForEach % 10)) { + case 1: + return " рубль"; + case 2: + case 3: + case 4: + return " рубля"; + default: + return " рублей"; + } + } +} + + diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..d81fd3a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,19 @@ -public class Main { +import java.util.Scanner; +public class Main { + static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + + //метод определения количества человек на чек + Calculator people = new Calculator(); + people.addPeople(); + + //метод добавления товара + Calculator check = new Calculator(); + check.addProduct(); + + //метод отоброжения чека + Calculator list = new Calculator(); + list.viewListProduct(); } -} + } \ No newline at end of file