import java.util.Scanner; import java.util.Locale; public class Main { private static Scanner scanner = new Scanner(System.in).useLocale(Locale.US); public static void main(String[] args) { System.out.println("Ðа ÑколÑÐºÐ¸Ñ Ñеловек Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑазделиÑÑ ÑÑÑÑ?"); int countPersons = getInt("ÐекоÑÑекÑное знаÑение. ÐведиÑе Ñелое ÑиÑло болÑÑе 1:"); while (countPersons <= 1) { System.out.println("ÐекоÑÑекÑное знаÑение: ÐведиÑе колиÑеÑÑво Ñеловек болÑÑе 1!"); countPersons = getInt("ÐекоÑÑекÑное знаÑение. ÐведиÑе Ñелое ÑиÑло болÑÑе 1:"); } System.out.println(String.format("ÐÑ Ð²Ð²ÐµÐ»Ð¸: %d Ñеловек", countPersons)); Calculator calculator = new Calculator(); do { String name = getString("ÐведиÑе название ÑоваÑа:"); double price = getDouble("ÐведиÑе ÑÑоимоÑÑÑ ÑоваÑа в ÑоÑмаÑе ÑÑбли.копейки (напÑимеÑ, 10.45):"); calculator.addProduct(name, price); scanner.nextLine(); } while (calculator.promptForNextProduct(getString("ÐобавиÑÑ ÐµÑе один ÑоваÑ? (ÐведиÑе 'завеÑÑиÑÑ' Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑениÑ) или лÑбой Ñимвол Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑоваÑов"))); calculator.displayProductsAndTotal(countPersons); scanner.close(); } public static String getString(String message) { String input; while (true) { System.out.println(message); input = scanner.nextLine(); if (input.isBlank()) { System.out.println("ÐекоÑÑекÑное знаÑение: ÑÑÑока пÑÑÑа или ÑодеÑÐ¶Ð¸Ñ ÑолÑко пÑобелÑ. ÐожалÑйÑÑа, введиÑе ÑÑо-нибÑÐ´Ñ ÐµÑе:"); } else if (input.matches("\\d+")) { System.out.println("ÐекоÑÑекÑное знаÑение: не должно ÑоÑÑоÑÑÑ ÑолÑко из ÑиÑÑ"); } else { break; } scanner.nextLine(); } return input; } public static double getDouble(String message) { double value; while (true) { System.out.println(message); if (scanner.hasNextDouble()) { value = scanner.nextDouble(); if (value > 0) { break; } else { System.out.println("ÐекоÑÑекÑное знаÑение: ÑиÑло не должно бÑÑÑ Ð¾ÑÑиÑаÑелÑнÑм."); } } else { System.out.println("ÐекоÑÑекÑное знаÑение: введенное знаÑение не ÑвлÑеÑÑÑ ÑиÑлом."); } scanner.nextLine(); } return value; } public static int getInt(String message) { while (!scanner.hasNextInt() ) { System.out.println(message); scanner.nextLine(); } int value = scanner.nextInt(); scanner.nextLine(); return value; } }