diff --git a/gradle.properties b/gradle.properties index 3c7a8bd3a..6b137ad6d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,5 @@ kotlin.code.style=official # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true + +org.gradle.warning.mode=none diff --git a/src/main/java/High_Load_Calculator.java b/src/main/java/High_Load_Calculator.java new file mode 100644 index 000000000..c9967f404 --- /dev/null +++ b/src/main/java/High_Load_Calculator.java @@ -0,0 +1,20 @@ +public class High_Load_Calculator +{ + private int accounts = 0 ; + private double total_cost = 0.0 ; + + private StringBuilder items = new StringBuilder(); + + High_Load_Calculator( int n ){ accounts = n; } + + public double add_item( String item, double cost ) + { + items.append(item).append("\n"); + total_cost += cost; + + return total_cost; + } + + public String get_items_string (){ return items.toString(); } + public double get_cost_per_account (){ return total_cost / accounts; } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c435..ff00a244c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,88 @@ -public class Main { +import java.util.Scanner; - public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + + +public class Main +{ + private static Scanner input = new Scanner( System.in ); + + private static boolean number_of_accounts_entered = false ; + private static boolean items_entered = false ; + private static int number_of_accounts = 0 ; + + private static final String EXIT_COMMAND = "Завершить"; + //static final String EXIT_COMMAND = "777"; + + private static final String ANSI_RED = "\u001B[31m" ; + private static final String ANSI_GREEN = "\u001B[32m" ; + private static final String ANSI_YELLOW = "\u001B[33m" ; + private static final String ANSI_BLUE = "\u001B[34m" ; + private static final String ANSI_PURPLE = "\u001B[35m" ; + private static final String ANSI_CYAN = "\u001B[36m" ; + + public static void main(String[] args) + { + String s = ""; + System.out.println( ANSI_PURPLE+ "------------------------------------------------"); + + + while (!number_of_accounts_entered) { + System.out.println(ANSI_YELLOW + "На скольких человек необходимо разделить счёт?" + ANSI_BLUE); + + s = input.nextLine(); + if (s.matches("\\d{1,9}")) if (Integer.parseInt(s) > 1) { + number_of_accounts_entered = true; + } + + if (!number_of_accounts_entered) { + System.out.println(ANSI_RED + "Ошибка! Вводите целое число больше единицы."); + } + } + number_of_accounts = Integer.parseInt(s); + High_Load_Calculator calculator = new High_Load_Calculator(number_of_accounts); + + + while ( !items_entered ) + { + System.out.println(ANSI_YELLOW + "\nВведите название товара и его стоимость в формате \""+ + ANSI_GREEN + "Товар = Стоимость"+ + ANSI_YELLOW + "\" или \""+ + ANSI_GREEN + EXIT_COMMAND + + ANSI_YELLOW + "\" для расчёта"); + + s = input.nextLine(); + if (s.equalsIgnoreCase(EXIT_COMMAND)) items_entered = true; + else if (s.contains("=")) { + String[] array_of_s = s.split("="); + if (array_of_s.length == 2) + if (array_of_s[0].length() > 0 && array_of_s[1].length() > 0) + try { + double d = Double.parseDouble(array_of_s[1]); + + if (d <= 0) System.out.println(ANSI_RED + "Отрицательное значение в стоимости товара!"); + else { + array_of_s[0] = array_of_s[0].trim(); + double total_cost = calculator.add_item(array_of_s[0], d); + + System.out.printf(ANSI_BLUE + "товар \"%s\" добавлен ( итого: %.2f руб.)%n\n", + array_of_s[0], total_cost); + } + } catch (NumberFormatException e) { + System.out.println(ANSI_RED + "Ошибка в стоимости товара!"); + } + } + } + + System.out.println( ANSI_CYAN+ "\nДобавленные товары:\n"+ calculator.get_items_string()); + System.out.printf( "Каждый человек должен заплатить %.2f рубл", calculator.get_cost_per_account() ); + + int n = (int) Math.floor( calculator.get_cost_per_account() ); + + if( 5 <= n%100 && n%100 <= 20 ) System.out.println("ей"); else + if( n%10 == 1 ) System.out.println("ь" ); else + if( 2 <= n%10 && n%10 <= 4 ) System.out.println("я" ); else + System.out.println("ей"); + + System.out.println( ANSI_PURPLE+ "------------------------------------------------"); } -} +} \ No newline at end of file