From 48eff1345bef097a75af4efb49bc44577f721698 Mon Sep 17 00:00:00 2001 From: Bilyalov Date: Sun, 7 Jan 2024 22:24:27 +0600 Subject: [PATCH 1/3] Alpha version 1.0 --- src/main/java/Calculator.java | 51 +++++++++++++++++++++++++++++++ src/main/java/Formater.java | 56 +++++++++++++++++++++++++++++++++++ src/main/java/Main.java | 22 +++++++++++++- 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Calculator.java create mode 100644 src/main/java/Formater.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..f132aa66f --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,51 @@ +import java.util.ArrayList; +import java.util.Scanner; +public class Calculator { + + private int numberOfPeople; + private double totalCost = 0; + private ArrayList listOfProducts; + private ArrayList costOfProducts; + + Formater format = new Formater(); + + Scanner scanner = new Scanner(System.in); + + Calculator(int numberOfPeople){ + this.numberOfPeople = numberOfPeople; + listOfProducts = new ArrayList(); + costOfProducts = new ArrayList(); + } + + public void addProduct(){ + while(true){ + System.out.print("Введите название продукта: "); + String str = scanner.next(); + if(!str.isEmpty()){ + this.listOfProducts.add(str); + addProductCost(); + System.out.println("Товар успешно добавлен!"); + break; + } + } + } + + public void addProductCost(){ + System.out.print("Введите цену товара: "); + double cost = format.scanDouble(); + this.costOfProducts.add(cost); + this.totalCost += cost; + + } + + public void show(){ + double result = totalCost/numberOfPeople; + String rubl = format.checkRes(result); + System.out.println("Добавленные товары: "); + for(int i = 0; i < listOfProducts.size(); i++){ + System.out.printf("%-10s %20.2f \n", listOfProducts.get(i), costOfProducts.get(i)); + } + System.out.printf("\nИтого с человека:%10.2f %-2s\n", result, rubl); + } + +} diff --git a/src/main/java/Formater.java b/src/main/java/Formater.java new file mode 100644 index 000000000..9e7699e5f --- /dev/null +++ b/src/main/java/Formater.java @@ -0,0 +1,56 @@ +import java.util.Scanner; + +public class Formater { + + Scanner scanner = new Scanner(System.in); + + + public int scanInt(){ + while(true){ + if(scanner.hasNextInt()){ + int numbForScan = scanner.nextInt(); + if(numbForScan> 1){ + return numbForScan; + } + else{ + System.out.println("Ошибка! Введите корректное число."); + scanner = null; + scanner = new Scanner(System.in); + } + } + else { + System.out.println("Ошибка! Введите корректное число."); + scanner = null; + scanner = new Scanner(System.in); + } + } + } + + public double scanDouble(){ + while(true){ + if(scanner.hasNextDouble()){ + double numbForScan = scanner.nextDouble(); + if(numbForScan> 0){ + return numbForScan; + } + else{ + System.out.println("Ошибка! Введите корректное число."); + scanner = null; + scanner = new Scanner(System.in); + } + } + else { + System.out.println("Ошибка! Введите корректное число."); + scanner = null; + scanner = new Scanner(System.in); + } + } + } + + public String checkRes(double numb){ + int a = (int) Math.floor(numb); + if(a % 10 == 1) return "рубль"; + else if (a % 10> 1 || a % 10 < 5) return "рубля"; + else return "рублей"; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..f29eb7feb 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,26 @@ +import java.util.Scanner; + public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Scanner scanner = new Scanner(System.in); + Formater format = new Formater(); + + System.out.print("Сколько человек будет делить счет: "); + int numberOfPeople = format.scanInt(); + Calculator calculator = new Calculator(numberOfPeople); + calculator.addProduct(); + + while(true){ + System.out.print("Желаете добавить ещё один товар? (Да/Завершить): "); + String str = scanner.next(); + if(str.equalsIgnoreCase("Завершить")){ + calculator.show(); + break; + } + if(str.equalsIgnoreCase("Да")) { + calculator.addProduct(); + } + } } } \ No newline at end of file From 94d648a56ea741c1d6d1d334be68e05126d35d61 Mon Sep 17 00:00:00 2001 From: Bilyalov Date: 2024年1月10日 03:41:05 +0600 Subject: [PATCH 2/3] Alpha version 1.1 --- src/main/java/Calculator.java | 36 ++++++++++++++++++++++++++--------- src/main/java/Formater.java | 9 ++++++--- src/main/java/Main.java | 24 ++--------------------- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index f132aa66f..542caf6ae 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -4,17 +4,34 @@ public class Calculator { private int numberOfPeople; private double totalCost = 0; - private ArrayList listOfProducts; - private ArrayList costOfProducts; + private final ArrayList listOfProducts; + private final ArrayList costOfProducts; - Formater format = new Formater(); + private final Formater format = new Formater(); - Scanner scanner = new Scanner(System.in); + private final Scanner scanner = new Scanner(System.in); - Calculator(int numberOfPeople){ - this.numberOfPeople = numberOfPeople; - listOfProducts = new ArrayList(); - costOfProducts = new ArrayList(); + Calculator(){ + listOfProducts = new ArrayList(); + costOfProducts = new ArrayList(); + } + + public void start(){ + System.out.print("Сколько человек будет делить счет: "); + this.numberOfPeople = format.scanInt(); + addProduct(); + + while(true){ + System.out.print("Желаете добавить ещё один товар? (Да/Завершить): "); + String str = scanner.next(); + if(str.equalsIgnoreCase("Завершить")){ + show(); + break; + } + if(str.equalsIgnoreCase("Да")) { + addProduct(); + } + } } public void addProduct(){ @@ -45,7 +62,8 @@ public void show(){ for(int i = 0; i < listOfProducts.size(); i++){ System.out.printf("%-10s %20.2f \n", listOfProducts.get(i), costOfProducts.get(i)); } - System.out.printf("\nИтого с человека:%10.2f %-2s\n", result, rubl); + System.out.printf("\nИтого с человека:%10.2f %-2s\n(Поделено на %d человек)\n", + result, rubl, numberOfPeople); } } diff --git a/src/main/java/Formater.java b/src/main/java/Formater.java index 9e7699e5f..bd4f8d011 100644 --- a/src/main/java/Formater.java +++ b/src/main/java/Formater.java @@ -2,7 +2,7 @@ public class Formater { - Scanner scanner = new Scanner(System.in); + private Scanner scanner = new Scanner(System.in); public int scanInt(){ @@ -49,8 +49,11 @@ public double scanDouble(){ public String checkRes(double numb){ int a = (int) Math.floor(numb); - if(a % 10 == 1) return "рубль"; - else if (a % 10> 1 || a % 10 < 5) return "рубля"; + if(a % 10 == 1) { + if(a>= 10 && a<=19) return "рублей"; + else return "рубль"; + } + else if (a % 10> 1 && a % 10 < 5) return "рубля"; else return "рублей"; } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f29eb7feb..50b2894b1 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,26 +1,6 @@ - -import java.util.Scanner; - public class Main { public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - Formater format = new Formater(); - - System.out.print("Сколько человек будет делить счет: "); - int numberOfPeople = format.scanInt(); - Calculator calculator = new Calculator(numberOfPeople); - calculator.addProduct(); - - while(true){ - System.out.print("Желаете добавить ещё один товар? (Да/Завершить): "); - String str = scanner.next(); - if(str.equalsIgnoreCase("Завершить")){ - calculator.show(); - break; - } - if(str.equalsIgnoreCase("Да")) { - calculator.addProduct(); - } - } + Calculator calculator = new Calculator(); + calculator.start(); } } \ No newline at end of file From 887f761f7ab396d43cf7dac7d68127385cba5d9c Mon Sep 17 00:00:00 2001 From: Bilyalov Date: 2024年1月10日 03:59:23 +0600 Subject: [PATCH 3/3] Fromater version 1.2 --- src/main/java/Formater.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/Formater.java b/src/main/java/Formater.java index bd4f8d011..f615b35bd 100644 --- a/src/main/java/Formater.java +++ b/src/main/java/Formater.java @@ -50,9 +50,10 @@ public double scanDouble(){ public String checkRes(double numb){ int a = (int) Math.floor(numb); if(a % 10 == 1) { - if(a>= 10 && a<=19) return "рублей"; + if(a % 100 == 11) return "рублей"; else return "рубль"; } + else if (a % 100>= 12 && a % 100 <= 15) return "рублей"; else if (a % 10> 1 && a % 10 < 5) return "рубля"; else return "рублей"; }

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