From 7ec5e749bfda0c61f0db43d08cbf85b108f4e34b Mon Sep 17 00:00:00 2001 From: desska Date: 2023年8月24日 20:04:08 +1000 Subject: [PATCH 1/2] Add summ distribute --- src/main/java/Calc.java | 46 +++++++++++++++++++++++ src/main/java/Formatter.java | 33 +++++++++++++++++ src/main/java/Input.java | 47 ++++++++++++++++++++++++ src/main/java/Item.java | 10 +++++ src/main/java/Main.java | 71 +++++++++++++++++++++++++++++++++++- 5 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Calc.java create mode 100644 src/main/java/Formatter.java create mode 100644 src/main/java/Input.java create mode 100644 src/main/java/Item.java diff --git a/src/main/java/Calc.java b/src/main/java/Calc.java new file mode 100644 index 000000000..2043d2450 --- /dev/null +++ b/src/main/java/Calc.java @@ -0,0 +1,46 @@ +import java.util.ArrayList; + +public class Calc { + + Calc() { + + items = new ArrayList(); + + } + + public void addItem(Item item) { + + items.add(item); + + } + + public String getItemsList() { + + StringBuilder builder = new StringBuilder(); + + for (Item item : items) { + builder.append(item.name); + builder.append("\n"); + } + return builder.toString(); + } + + public double getSum() { + + double sum = 0; + for (Item item : items) { + sum += item.price; + } + return sum; + } + + public double distributedSum(double sum, int personsAmount) { + + return ((personsAmount> 0) ? sum / personsAmount : 0); + + } + + private ArrayList items; + + +} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java new file mode 100644 index 000000000..fab231561 --- /dev/null +++ b/src/main/java/Formatter.java @@ -0,0 +1,33 @@ +public class Formatter { + + public String getFormatSum(double sum) { + + return String.format("%.2f %s", sum, getFormattedRub(sum)); + + } + + String getFormattedRub(double sum) { + + Double s = new Double(sum); + String sumAsString = String.valueOf(s.intValue()); + char lastNum = sumAsString.charAt(sumAsString.length() - 1); + String ending = ""; + switch (lastNum) { + case ('1'): + ending = "ль"; + break; + case ('2'): + case ('3'): + case ('4'): + ending = "ля"; + break; + default: + ending = "лей"; + break; + } + + return "руб" + ending; + + } + +} diff --git a/src/main/java/Input.java b/src/main/java/Input.java new file mode 100644 index 000000000..18bbf3551 --- /dev/null +++ b/src/main/java/Input.java @@ -0,0 +1,47 @@ +import java.util.Scanner; + +public class Input { + + public int nextInt(Scanner scanner) { + + boolean isContinue = true; + int val = 0; + while (isContinue) { + + if (scanner.hasNextInt()) { + val = scanner.nextInt(); + isContinue = false; + } else { + System.out.println("Значение некорректного типа"); + scanner.next(); + } + + } + return val; + } + + public double nextDouble(Scanner scanner) { + + boolean isContinue = true; + double val = 0; + while (isContinue) { + + if (scanner.hasNextDouble()) { + val = scanner.nextDouble(); + isContinue = false; + } else { + System.out.println("Значение некорректного типа"); + scanner.next(); + } + + } + return val; + } + + public String next(Scanner scanner) { + + return scanner.next(); + + } + +} diff --git a/src/main/java/Item.java b/src/main/java/Item.java new file mode 100644 index 000000000..b41c48e8e --- /dev/null +++ b/src/main/java/Item.java @@ -0,0 +1,10 @@ +public class Item { + + public String name; + public double price; + + Item(String name, double price) { + this.name = name; + this.price = price; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..8ec28292f 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,73 @@ +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + + System.out.println("На скольких человек делить счет?"); + + Scanner scanner = new Scanner(System.in); + Input input = new Input(); + + int personsAmount = input.nextInt(scanner); + + while (!isCorrectPersonsAmount(personsAmount)) { + System.out.println("Введенное значение некорректно. Повторите ввод"); + personsAmount = input.nextInt(scanner); + } + + if (!isNeedToDistribute(personsAmount)) { + System.out.println("Для одного человека делить ничего не требуется."); + return; + } + + Calc calc = new Calc(); + + boolean isContinue = true; + + while (isContinue) { + + System.out.println("Введите наименование товара"); + String itemName = input.next(scanner); + + System.out.println("Введите цену для товара " + itemName); + double itemPrice = input.nextDouble(scanner); + + Item item = new Item(itemName, itemPrice); + calc.addItem(item); + + System.out.println("Вы хотите добавить еще один товар? Если нет, введите \"" + finishAddComand() + "\" Для завершения ввода"); + + String command = scanner.next(); + isContinue = !isFinishAddCommand(command); + + } + + System.out.println("Добавленные товары:\n" + calc.getItemsList()); + + double sum = calc.getSum(); + double distributedSum = calc.distributedSum(sum, personsAmount); + Formatter formatter = new Formatter(); + System.out.println("Распределенная на каждого сумма: " + formatter.getFormatSum(distributedSum)); + + } + + static boolean isCorrectPersonsAmount(int personsAmount) { + return personsAmount>= 1; + } + + static boolean isNeedToDistribute(int personsAmount) { + return personsAmount> 1; + } + + static boolean isFinishAddCommand(String command) { + return command.equalsIgnoreCase(finishAddComand()); + } + + static String finishAddComand() { + return "завершить"; } -} \ No newline at end of file + +} + + + From 3599c9262d97e4f5b819c4abaa5e28e8f3065f01 Mon Sep 17 00:00:00 2001 From: desska Date: 2023年8月27日 11:04:26 +1000 Subject: [PATCH 2/2] fix negative price error fix price format error --- src/main/java/Calc.java | 5 ++--- src/main/java/Formatter.java | 15 +++++++-------- src/main/java/Main.java | 7 +++++++ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/main/java/Calc.java b/src/main/java/Calc.java index 2043d2450..b992135fd 100644 --- a/src/main/java/Calc.java +++ b/src/main/java/Calc.java @@ -2,6 +2,8 @@ public class Calc { + private ArrayList items; + Calc() { items = new ArrayList(); @@ -40,7 +42,4 @@ public double distributedSum(double sum, int personsAmount) { } - private ArrayList items; - - } diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index fab231561..a85553467 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -8,26 +8,25 @@ public String getFormatSum(double sum) { String getFormattedRub(double sum) { + if(((sum % 100)>= 11) & ((sum % 100) <=19)) { + return "рублей"; + } + Double s = new Double(sum); String sumAsString = String.valueOf(s.intValue()); char lastNum = sumAsString.charAt(sumAsString.length() - 1); String ending = ""; switch (lastNum) { case ('1'): - ending = "ль"; - break; + return "рубль"; case ('2'): case ('3'): case ('4'): - ending = "ля"; - break; + return "рубля"; default: - ending = "лей"; - break; + return "рублей"; } - return "руб" + ending; - } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 8ec28292f..07ab77896 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -31,6 +31,10 @@ public static void main(String[] args) { System.out.println("Введите цену для товара " + itemName); double itemPrice = input.nextDouble(scanner); + while (! isCorrectPrice(itemPrice)) { + System.out.println("Введенная цена должна быть больше нуля"); + itemPrice = input.nextDouble(scanner); + } Item item = new Item(itemName, itemPrice); calc.addItem(item); @@ -63,6 +67,9 @@ static boolean isFinishAddCommand(String command) { return command.equalsIgnoreCase(finishAddComand()); } + static boolean isCorrectPrice(double price) { + return price> 0; + } static String finishAddComand() { return "завершить"; }

AltStyle によって変換されたページ (->オリジナル) /