import static java.lang.System.in; import static java.util.Locale.ROOT; import java.util.Scanner; /*клаÑÑ Ð¿ÑедназнаÑен Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑÑ , Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð¸ полÑзоваÑÐµÐ»Ñ * пеÑеменнÑе иниÑиализиÑÑÑÑÑÑ Ð² клаÑÑе Main * Ñакже в клаÑÑе Ñ ÑанÑÑÑÑ Ð¼ÐµÑÐ¾Ð´Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ñ Ð¿Ð¾Ð»ÑзоваÑелем*/ public class UI { public static int inputInt; public static float inputFloat; public static String inputStr; public static int minPersonForSplit; public static float minProductPrice; public static int howManyPerson; public static boolean readyToGo(Scanner input, String needVariableType) {/*меÑод, Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑазÑеÑÐµÐ½Ð¸Ñ Ð½Ð° пÑÐ¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð² завиÑимоÑÑи Ð¾Ñ Ð¾Ñ Ð´Ð²ÑÑ Ð°ÑгÑменÑов, введенной пеÑеменной и ÑÑÑоки, вклÑÑаÑÑÐ°Ñ Ð² ÑÐµÐ±Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñй Ñи пеÑеменной, возвÑаÑÐ°ÐµÑ true или false, в Ñ Ð¾Ð´Ðµ ÑабоÑÑ Ð¸ÑполÑзÑÐµÑ Ð¼ÐµÑÐ¾Ð´Ñ Ð¿ÑоовеÑки ÑекÑÑего клаÑÑа*/ switch (needVariableType) { case "needInt": return checkForIntAndMinPersons(input); case "needFloat": return checkForFloatAndMinProductPrice(input); case "needStr": return checkForStr(input); default: System.err.println("error in Ui class methods"); break; } return false; } /*меÑÐ¾Ð´Ñ Ð¿ÑовеÑки введеннÑÑ Ð´Ð°Ð½Ð½ÑÑ Ñ ÐºÐ¾Ð½Ñоли, на ÑÑебÑемÑй Ñип даннÑÑ , возвÑаÑÐ°ÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑкÑÑ Ð¿ÐµÑеменнÑÑ * в Ñ Ð¾Ð´Ðµ ÑабоÑÑ Ð¿ÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ ÑоооÑвеÑÑÑвÑÑÑим пеÑеменнÑм клаÑÑа ÑооÑвеÑÑÑвÑÑÑие даннÑе, меÑодÑ, Ñакже * вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ð²Ñвод оÑибки, в ÑлÑÑае не ÑоооÑвеÑÑÐ²Ð¸Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑÑебÑемомÑ*/ public static boolean checkForIntAndMinPersons(Scanner input) { boolean a = input.hasNextInt(); if (a) { int b = input.nextInt(); if (b == 1) { System.err.print("Ðа одного Ñеловека Ð½ÐµÑ ÑмÑÑла делиÑÑ\nповÑоÑиÑе ввод: "); return false; } if (b > UI.minPersonForSplit - 1) { inputInt = b; return true; } else { return errMsgIntPrint(); } } else { return errMsgIntPrint(); } } public static boolean checkForFloatAndMinProductPrice(Scanner input) { input = PriceFormatterToString.dotToPointReplacing(input); boolean a = input.hasNextFloat(); if (a) { float b = input.nextFloat(); if (b > (UI.minProductPrice - UI.minProductPrice)) { inputFloat = b; return true; } } else { return errMsgFloatPrint();//false } return errMsgFloatPrint();//false } public static boolean checkForStr(Scanner input) { inputStr = input.nextLine(); return true; } public static boolean errMsgIntPrint() { System.err.print("ÐведиÑе Ñелое ÑиÑло, болÑÑе единиÑÑ\nповÑоÑиÑе ввод коллиÑеÑÑва гоÑÑей: "); return false; } public static boolean errMsgFloatPrint() { System.err.print("ÐведиÑе дÑобное ÑиÑло, болÑÑе нÑлÑ\nи повÑоÑиÑе попÑÑÐºÑ Ð²Ð²Ð¾Ð´Ð° ÑÑоимоÑÑи пÑодÑкÑа: "); return false; } public static void getPersonsCount() { boolean a; do { Scanner scanner = new Scanner(in); a = UI.readyToGo(scanner, "needInt"); } while (!a); } public static boolean getOneProduct() { boolean readProductName; int i = 0; do { boolean readProductPrice; i++; Scanner scanner = new Scanner(in); inputStr = scanner.nextLine(); inputStr = inputStr.trim(); inputStr = inputStr.toLowerCase(ROOT); readProductName = inputStr.equals("завеÑÑиÑÑ"); readProductPrice = readProductName; if (!readProductPrice) { getProductPrice(); Product product = new Product(i, inputStr, inputFloat); ProductList.writeToProductList(product); System.out.print("пÑодÑÐºÑ Ð¸ его ÑÑоимоÑÑÑ ÑÑпеÑно добавленÑ\n" + "еÑли Ð²Ñ Ñ Ð¾ÑиÑе законÑиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ ÑоваÑа, Ñо введиÑе \"завеÑÑиÑÑ\" или\nвведиÑе название пÑодÑкÑа: "); } } while (!readProductName); return true; } public static void getProductPrice() { boolean readProductPrice; System.out.print("ÐведиÑе ÑÑоимоÑÑÑ Ð¿ÑодÑкÑа: "); do { Scanner scanner = new Scanner(in); readProductPrice = checkForFloatAndMinProductPrice(scanner); } while (!readProductPrice); } public static void makeProductList() { boolean a; do { a = getOneProduct(); } while (!a); } }