diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..889adeac2 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,32 @@ +import java.util.Scanner; +import сlasses.Menu; public class Main { + + static Scanner scanner = new Scanner(System.in); + static Menu menu = new Menu(); + static int people = 0; + public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println("На скольких человек необходимо разделить счет? (Больше 1)"); + + getAmountOfPeople(); + } + + private static void getAmountOfPeople(){ + while (true){ + if (scanner.hasNextInt()) { + people = scanner.nextInt(); + if (people> 1){ + menu.setMenu(people); + break; + } else { + System.out.println("Людей, между которыми делится счет, должно быть больше 1, повторите ввод."); + } + } else { + System.out.println("Введено неверное значение, повторите ввод."); + scanner = new Scanner(System.in); + } + } } } \ No newline at end of file diff --git "a/src/main/java/321円201円lasses/Calculator.java" "b/src/main/java/321円201円lasses/Calculator.java" new file mode 100644 index 000000000..08746de38 --- /dev/null +++ "b/src/main/java/321円201円lasses/Calculator.java" @@ -0,0 +1,19 @@ +package сlasses; + +import java.util.ArrayList; + +public class Calculator { + double sum = 0.0; + + public void printMenu(int people, ArrayList products){ + System.out.println("Меню:\n"); + for(int i = 0; i < products.size(); i++){ + System.out.println(products.get(i).name +": " + DoubleFormatter.formatDouble(products.get(i).price) + RubleFormatter.formatRubles(products.get(i).price)); + sum += products.get(i).price; + } + System.out.println("\nКоличество людей: " + people); + System.out.println("\nОбщая сумма счета: " + DoubleFormatter.formatDouble(sum) + RubleFormatter.formatRubles(sum)); + System.out.println("Каждый должен заплатить по: " + DoubleFormatter.formatDouble(sum/people) + RubleFormatter.formatRubles(sum/people)); + } + +} diff --git "a/src/main/java/321円201円lasses/DoubleFormatter.java" "b/src/main/java/321円201円lasses/DoubleFormatter.java" new file mode 100644 index 000000000..139175a7a --- /dev/null +++ "b/src/main/java/321円201円lasses/DoubleFormatter.java" @@ -0,0 +1,7 @@ +package сlasses; + +public class DoubleFormatter { + public static String formatDouble(double num){ + return String.format("%.2f", num); + } +} diff --git "a/src/main/java/321円201円lasses/Menu.java" "b/src/main/java/321円201円lasses/Menu.java" new file mode 100644 index 000000000..0284af817 --- /dev/null +++ "b/src/main/java/321円201円lasses/Menu.java" @@ -0,0 +1,49 @@ +package сlasses; + +import java.util.ArrayList; +import java.util.Scanner; + +public class Menu { + + Product product; + ArrayList products = new ArrayList(); + Scanner scanner = new Scanner(System.in); + Calculator calculator = new Calculator(); + + public void setMenu(int people){ + + while(true){ + System.out.println("Введите название товара (\"Завершить\" для завершения)"); + String productName = scanner.next(); + + if (productName.equalsIgnoreCase("завершить")){ + calculator.printMenu(people, products); + break; + } else { + System.out.println("Введите цену товара (в виде рубли.копейки)"); + + product = new Product(productName, getProductPrice()); + products.add(product); + System.out.println("Товар добавлен"); + } + } + } + + private double getProductPrice(){ + while(true){ + if(scanner.hasNextDouble()){ + double price = scanner.nextDouble(); + if (price <= 0){ + System.out.println("Введено отрицательное или нулевое значение, повторите ввод."); + scanner = new Scanner(System.in); + } else { + return price; + } + } else { + System.out.println("Введено не число, повторите ввод."); + scanner = new Scanner(System.in); + } + } + } + +} diff --git "a/src/main/java/321円201円lasses/Product.java" "b/src/main/java/321円201円lasses/Product.java" new file mode 100644 index 000000000..efbcc071a --- /dev/null +++ "b/src/main/java/321円201円lasses/Product.java" @@ -0,0 +1,13 @@ +package сlasses; + +public class Product { + + public String name; + public double price; + + public Product(String name, double price){ + this.name = name; + this.price = price; + } + +} diff --git "a/src/main/java/321円201円lasses/RubleFormatter.java" "b/src/main/java/321円201円lasses/RubleFormatter.java" new file mode 100644 index 000000000..778faa08a --- /dev/null +++ "b/src/main/java/321円201円lasses/RubleFormatter.java" @@ -0,0 +1,18 @@ +package сlasses; + +public class RubleFormatter { + + public static String formatRubles(double price) { + int amount = (int) price; + if (amount < 0) { + return "Отрицательное количество рублей"; + } else if (amount == 1 || (amount % 10 == 1 && amount % 100 != 11)) { + return " рубль"; + } else if ((amount>= 2 && amount <= 4) || (amount % 10>= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100>= 20))) { + return " рубля"; + } else { + return " рублей"; + } + } + +}

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