diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..7643783 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + xmlns:android + + ^$ + + + + + + + + + xmlns:.* + + ^$ + + + BY_NAME + + + + + + + .*:id + + http://schemas.android.com/apk/res/android + + + + + + + + + .*:name + + http://schemas.android.com/apk/res/android + + + + + + + + + name + + ^$ + + + + + + + + + style + + ^$ + + + + + + + + + .* + + ^$ + + + BY_NAME + + + + + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + + + + + + + .* + + .* + + + BY_NAME + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..d86ec0b --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0fbcaa4 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index be110bf..225671a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,3 +13,4 @@ dependencyResolutionManagement { } } rootProject.name = "Java-Module-Project" +include ':JDK' diff --git a/src/main/java/Counter.java b/src/main/java/Counter.java new file mode 100644 index 0000000..cd11abe --- /dev/null +++ b/src/main/java/Counter.java @@ -0,0 +1,112 @@ +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.Scanner; + + +public class Counter { + + private final int countPerson; + private final HashMap goods = new HashMap(); + + Counter(int countPerson) { + this.countPerson = countPerson; + } + + public void askUser() { + + Scanner sc = new Scanner(System.in); + + System.out.println("Введите товар"); + + // Получение товара + String product = sc.next(); + + if (endSession(product)) { + System.out.println("Сессия закончена. Спасибо!"); + return; + } + + System.out.println("Введите стоимость"); + + // Стоимость + String cost = addCost(sc); + + if (endSession(cost)) { + System.out.println("Сессия закончена. Спасибо!"); + return; + } + + // добавляем продукт + goods.put(product, Double.parseDouble(cost)); + + System.out.println("Добавлено успешно!"); + + // Снова спрашиваем про товар (Рекурсия) + askUser(); + + } + + private String addCost(Scanner sc) { + + String cost = sc.next(); + + if (!cost.matches("\\d+.\\d{2}")) { + + System.out.println("Значение не соответсвует маске XX.XX Введите стоимость заново"); + // (Рекурсия) + cost = addCost(sc); + } + + return cost; + } + + private boolean endSession(String str) { + + if (str.equalsIgnoreCase("ЗАВЕРШИТЬ")) { + + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + // вывести результаты + System.out.println("Добавленные товары:"); + + goods.forEach((key, value) -> + System.out.println("*** " + key + " | Стоимость " + value + " " + GetRubleAddition(value))); + + double total = goods.values().stream().mapToDouble(Double::doubleValue).sum(); + + System.out.println("Всего потрачено: " + decimalFormat.format(total) + " " + GetRubleAddition(total)); + + double fromOnePerson = total / countPerson; + + System.out.println("С человека - " + decimalFormat.format(fromOnePerson) + + " " + GetRubleAddition(fromOnePerson)); + + return true; + + } + + return false; + + } + + private String GetRubleAddition(Double value) { + + int num = value.intValue(); + + int preLastDigit = num % 100 / 10; + if (preLastDigit == 1) { + return "рублей"; + } + + switch (num % 10) { + case 1: + return "рубль"; + case 2: + case 3: + case 4: + return "рубля"; + default: + return "рублей"; + } + } + +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..a3579ab 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,49 @@ +import java.util.Scanner; + public class Main { public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + + int countPerson = 0; + + System.out.println("Добрый день!"); + Scanner sc = new Scanner(System.in); + + while (true){ + + System.out.println("Сколько вас?"); + + try { + + countPerson = sc.nextInt(); + + if (countPerson == 1) { + + System.out.println("Для одного человека в приложении нет необходимости"); + + } else if (countPerson < 1) { + + System.out.println("Ошибочное значение. Повторите ввод"); + + } else { + + break; + + } + + } catch (Exception e){ + + System.out.println("Введено неправильное значение повторите ввод"); + + } + + } + + // Пользователь ввел корректное количество. Приступаем к расчетам + Counter counter = new Counter(countPerson); + counter.askUser(); + } + + } AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル