import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int numberPerson = enterNumberFriends(scanner); InvoiceCalculator invoiceCalculator = new InvoiceCalculator(); billEntry(scanner, invoiceCalculator); invoiceCalculator.showList(); formatTotalPrice(invoiceCalculator, numberPerson); scanner.close(); } public static int enterNumberFriends(Scanner scanner) { System.out.print("Ðа ÑколÑко дÑÑзей ÑазделиÑÑ ÑÑÑÑ: "); while (true) { if (scanner.hasNextInt()) { int numberPeople = scanner.nextInt(); if (numberPeople <= 1) { System.out.print("ÐведиÑе коÑÑекÑное знаÑение: "); } else if (numberPeople > 1) { return numberPeople; } } else if (scanner.hasNextLine()) { System.out.print("ÐведиÑе Ñелое ÑиÑло: "); scanner.nextLine(); } } } public static void billEntry(Scanner scanner, InvoiceCalculator invoiceCalculator) { while (true) { String productName = scanner.nextLine(); double price; System.out.print("ÐведиÑе наименование ÑоваÑа: "); while (true) { if (scanner.hasNextLine()) { productName = scanner.nextLine(); break; } else System.out.println("ÐÑ Ð¾ÑиблиÑÑ, введиÑе наименование ÑоваÑа еÑе Ñаз"); } System.out.print("ÐведиÑе ÑÑоимоÑÑÑ ÑоваÑа: "); while (true) { if (scanner.hasNextDouble()) { price = scanner.nextDouble(); if (price <= 1) { System.out.print("ÐведиÑе коÑÑекÑное знаÑение: "); } else if (price > 1) { break; } } else if (scanner.hasNextLine()) { System.out.print("ÐÑ Ð¾ÑиблиÑÑ, введиÑе ÑÑоимоÑÑÑ ÑоваÑа еÑе Ñаз: "); scanner.nextLine(); } } invoiceCalculator.addProduct(new Product(productName, price)); System.out.println("Ð¢Ð¾Ð²Ð°Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½. ХоÑиÑе пÑодолжиÑÑ - введиÑе лÑбой не пÑобелÑнÑй Ñимвол, инаÑе - \"ÐавеÑÑиÑÑ\""); if (scanner.next().equalsIgnoreCase("ÐавеÑÑиÑÑ")) { break; } } } public static void formatTotalPrice(InvoiceCalculator invoiceCalculator, int numberPerson) { int roundWhole = (int) Math.floor(invoiceCalculator.totalPrice() / numberPerson); String formatRuble = "ÑÑблÑ"; int lastDigit = roundWhole % 10; int twoLastDigits = roundWhole % 100; if (twoLastDigits > 10 && twoLastDigits < 19) { formatRuble = "ÑÑблей"; } else { switch (lastDigit) { case 1: formatRuble = "ÑÑблÑ"; break; case 2: case 3: case 4: formatRuble = "ÑÑблÑ"; break; default: formatRuble = "ÑÑблей"; break; } } String format = String.format("ÐÑого ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ðº оплаÑе: %.2f %s", invoiceCalculator.totalPrice() / numberPerson, formatRuble); System.out.println(format); } }