import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) { // ÐÐ¾ÐºÐ°Ð»Ñ Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°/вÑвода веÑеÑÑвеннÑÑ ÑиÑел c ÑазделиÑелем ÑоÑкой Locale LOCALE = Locale.ENGLISH; Scanner scanner = new Scanner(System.in); scanner.useLocale(LOCALE); // ÐпÑеделение колиÑеÑÑва Ñеловек int personCount = getPersonCount(scanner); // Ðвод ÑоваÑов в калÑкÑлÑÑÐ¾Ñ Calculator calculator = new Calculator(personCount); addProductsToCalculator(scanner, calculator); scanner.close(); // ÐÑвод даннÑÑ System.out.println("ÐобавленнÑе ÑоваÑÑ:"); for (Product product : calculator.products) { System.out.printf(LOCALE,"%s: %.2f%n",product.name, product.price); } System.out.println("-------------------"); System.out.printf("ÐбÑÐ°Ñ ÑÑмма: %s%n", formatSum(LOCALE, calculator.productSum)); System.out.printf("СÑмма на каждого: %s", formatSum(LOCALE, calculator.getSumPerPerson())); } static int getPersonCount(Scanner scanner){ int personCount; while (true) { System.out.println("Ðа ÑколÑÐºÐ¸Ñ Ñеловек Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑазделиÑÑ ÑÑÑÑ?"); if (!scanner.hasNextInt()) { System.out.println("ÐÑибка: колиÑеÑÑво Ñеловек должно бÑÑÑ ÑелÑм ÑиÑлом"); scanner.nextLine(); continue; } personCount = scanner.nextInt(); if (personCount <= 1) { System.out.println("ÐÑибка: колиÑеÑÑво Ñеловек должно бÑÑÑ > 1"); scanner.nextLine(); continue; } return personCount; } } static void addProductsToCalculator(Scanner scanner, Calculator calculator){ while (true) { System.out.println("УкажиÑе название и ÑÑоимоÑÑÑ ÑоваÑа в ÑоÑмаÑе ÑÑбли.копейки:"); String productName = scanner.next(); if (!scanner.hasNextDouble()) { System.out.println("ÐÑибка: ÑÑоимоÑÑÑ ÑоваÑа должна бÑÑÑ ÑиÑлом"); scanner.nextLine(); continue; } double productPrice = scanner.nextDouble(); if (productPrice < 0) { System.out.println("ÐÑибка: ÑÑоимоÑÑÑ ÑоваÑа не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÑиÑаÑелÑной"); scanner.nextLine(); continue; } calculator.addProduct(new Product(productName, productPrice)); System.out.println("Ð¢Ð¾Ð²Ð°Ñ ÑÑпеÑно добавлен в калÑкÑлÑÑоÑ!"); System.out.println("ХоÑиÑе добавиÑÑ ÐµÑе один ÑоваÑ? (введиÑе 'ÐÐÐÐРШÐТЬ' Ð´Ð»Ñ Ð²ÑÑ Ð¾Ð´Ð°)"); if (scanner.next().equalsIgnoreCase("завеÑÑиÑÑ")) { break; } } } static String formatSum(Locale locale, double value) { int valueRnd = (int) value; String currency = switch (valueRnd % 10) { case 1 -> "ÑÑблÑ"; case 2, 3, 4 -> "ÑÑблÑ"; default -> "ÑÑблей"; }; if (valueRnd % 100 > 10 && valueRnd % 100 < 20) { currency = "ÑÑблей"; } return String.format(locale,"%.2f %s",value,currency); } }