From cf2616dc76dc3795bbb8504e4735fe3b8bd057c6 Mon Sep 17 00:00:00 2001 From: Sergey Lyulchenko Date: 2023年8月21日 15:58:15 +0400 Subject: [PATCH 1/3] commit HW --- src/main/java/Calculator.java | 59 ++++++++++++++++++++++++++++++ src/main/java/Main.java | 69 ++++++++++++++++++++++++++++++++++- src/main/java/Product.java | 29 +++++++++++++++ 3 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Calculator.java create mode 100644 src/main/java/Product.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..348cb1b2c --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,59 @@ +import java.util.ArrayList; +import java.util.List; + +public class Calculator { + private Listlist = new ArrayList(); + private int person = 0; + Calculator(int person){ + this.person = person; + } + + public List getList() { + return list; + } + public void add(Product product){ + list.add(product); + } + public double sum(){ + double sum = 0.0; + for(Product p : list){ + sum += p.getPrice(); + } + return ((double)Math.round(sum * 100)) / 100; + } + public double calcPastPay(){ + if(this.person> 0) + return ((double)Math.round(sum() / this.person * 100)) / 100; + else + return 0.0; + } + public void printCheck(){ + for(Product p: getList()){ + System.out.println(p.toString()); + } + } + public String rubRightWrite(double sum){ + int dec = (((int) sum) / 10) % 10; + if(dec == 1){ + return "рублей"; + }else { + int delta = ((int) sum) % 10; + switch (delta) { + case 1: + return "рубль"; + case 2: + case 3: + case 4: + return "рубля"; + case 0: + case 5: + case 6: + case 7: + case 8: + case 9: + return "рублей"; + } + } + return "руб."; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..1f9ce9eff 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,73 @@ +import java.util.ArrayList; +import java.util.List; +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); + int countPerson = 0; + // String nameProduct = ""; + double price = 0.0; + String next = ""; + Calculator calc = null; + + countPerson = scanner.nextInt(); + if (countPerson <= 0){ + System.out.println("Количество человек не может быть отрицательным или равным нулю!"); + }else if(countPerson == 1){ + System.out.println("Нет смысла в работе программы при количестве персон равном 0"); + }else { + System.out.println("Вы планируете разделить счета на "+countPerson+" чел."); + calc = new Calculator(countPerson); + while(!next.equals("завершить")){ + System.out.println("Введите наименование товара: "); + System.out.print("-> "); + String tmp = scanner.next(); + + boolean check = false; + String strPrice = ""; + while (!check) { + System.out.print("-> "); + strPrice = scanner.next(); + check = verifyDouble(strPrice); + if(!check){ + System.out.println("Не правильный ввод. Поробуйте еще."); + } + } + price = Double.parseDouble(strPrice); + Product product = new Product(tmp,price); + calc.add(new Product(tmp,price)); + System.out.println("Добавить еще товар? Да: любой символ + Enter, Закончить ввод: Завершить + Enter"); + next = (scanner.next().toLowerCase()); + } + System.out.println("Итоговый чек: "); + calc.printCheck(); + System.out.println("К оплате итого: "+calc.sum()+" "+calc.rubRightWrite(calc.sum())); + System.out.println("В том числе с каждого члена команды "+calc.calcPastPay()+" "+calc.rubRightWrite(calc.calcPastPay())); + } + } + public static boolean verifyDouble(String str){ + boolean rez = false; + char[] chArr = str.toCharArray(); + int countPoint = 0; + for(char i: chArr){ + if(Character.isDigit(i)){ + rez = true; + }else if(i == '.'){ + countPoint++; + }else if(!Character.isDigit(i) && i != '.'){ + rez = false; + return rez; + } + } + if(countPoint <= 1){ + return rez; + }else{ + rez = false; + return rez; + } + } + } \ No newline at end of file diff --git a/src/main/java/Product.java b/src/main/java/Product.java new file mode 100644 index 000000000..660ec620f --- /dev/null +++ b/src/main/java/Product.java @@ -0,0 +1,29 @@ +public class Product { + private String name = ""; + private double price = 0.0; + Product(String name, double price){ + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + @Override + public String toString() { + return "Добавленный товар: " + name + ", Цена: " + price ; + } +} From 032571401481799e98185174952f9e3104c6f8ec Mon Sep 17 00:00:00 2001 From: Sergey Lyulchenko Date: 2023年8月23日 17:22:58 +0400 Subject: [PATCH 2/3] second version --- src/main/java/Calculator.java | 2 +- src/main/java/Main.java | 61 +++++++++++++++++++---------------- src/main/java/Product.java | 12 ------- 3 files changed, 34 insertions(+), 41 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 348cb1b2c..f0a7135cd 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -2,7 +2,7 @@ import java.util.List; public class Calculator { - private Listlist = new ArrayList(); + private final Listlist = new ArrayList(); private int person = 0; Calculator(int person){ this.person = person; diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 1f9ce9eff..d70142c54 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -7,9 +7,7 @@ public static void main(String[] args) { System.out.println("На сколько персон необходимо поделить счет: "); Scanner scanner = new Scanner(System.in); int countPerson = 0; - // String nameProduct = ""; - double price = 0.0; - String next = ""; + Calculator calc = null; countPerson = scanner.nextInt(); @@ -20,27 +18,8 @@ public static void main(String[] args) { }else { System.out.println("Вы планируете разделить счета на "+countPerson+" чел."); calc = new Calculator(countPerson); - while(!next.equals("завершить")){ - System.out.println("Введите наименование товара: "); - System.out.print("-> "); - String tmp = scanner.next(); + buildCheck(calc); - boolean check = false; - String strPrice = ""; - while (!check) { - System.out.print("-> "); - strPrice = scanner.next(); - check = verifyDouble(strPrice); - if(!check){ - System.out.println("Не правильный ввод. Поробуйте еще."); - } - } - price = Double.parseDouble(strPrice); - Product product = new Product(tmp,price); - calc.add(new Product(tmp,price)); - System.out.println("Добавить еще товар? Да: любой символ + Enter, Закончить ввод: Завершить + Enter"); - next = (scanner.next().toLowerCase()); - } System.out.println("Итоговый чек: "); calc.printCheck(); System.out.println("К оплате итого: "+calc.sum()+" "+calc.rubRightWrite(calc.sum())); @@ -48,6 +27,34 @@ public static void main(String[] args) { } } + public static void buildCheck(Calculator calc){ + String next = "" ; + double price ; + Scanner scanner = new Scanner(System.in); + while(!next.equals("завершить")){ + System.out.println("Введите наименование товара: "); + System.out.print("-> "); + String tmp = scanner.next(); + + boolean check = false; + String strPrice = ""; + while (!check) { + System.out.println("Стоимость:"); + System.out.print("-> "); + strPrice = scanner.next(); + check = verifyDouble(strPrice); + if(!check){ + System.out.println("Не правильный ввод. Поробуйте еще."); + } + } + price = Double.parseDouble(strPrice); + calc.add(new Product(tmp,price)); + System.out.println("Добавить еще товар? Да: любой символ + Enter, Закончить ввод: Завершить + Enter"); + next = (scanner.next().toLowerCase()); + } + } + + public static boolean verifyDouble(String str){ boolean rez = false; char[] chArr = str.toCharArray(); @@ -57,17 +64,15 @@ public static boolean verifyDouble(String str){ rez = true; }else if(i == '.'){ countPoint++; - }else if(!Character.isDigit(i) && i != '.'){ + }else{ rez = false; return rez; } } - if(countPoint <= 1){ - return rez; - }else{ + if(countPoint> 1){ rez = false; - return rez; } + return rez; } } \ No newline at end of file diff --git a/src/main/java/Product.java b/src/main/java/Product.java index 660ec620f..4bccfd575 100644 --- a/src/main/java/Product.java +++ b/src/main/java/Product.java @@ -6,22 +6,10 @@ public class Product { this.price = price; } - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - public double getPrice() { return price; } - public void setPrice(double price) { - this.price = price; - } - @Override public String toString() { return "Добавленный товар: " + name + ", Цена: " + price ; From d809276bbdab6549b0e986f9de32e029dee330d3 Mon Sep 17 00:00:00 2001 From: Sergey Lyulchenko Date: 2023年8月25日 11:24:37 +0400 Subject: [PATCH 3/3] overflow error --- src/main/java/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index d70142c54..c001de3ca 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -10,9 +10,9 @@ public static void main(String[] args) { Calculator calc = null; - countPerson = scanner.nextInt(); + countPerson = scanner.hasNextInt() ? scanner.nextInt() : 0; if (countPerson <= 0){ - System.out.println("Количество человек не может быть отрицательным или равным нулю!"); + System.out.println("Количество человек не может быть отрицательным или равным нулю! Либо введено слишком большое число!"); }else if(countPerson == 1){ System.out.println("Нет смысла в работе программы при количестве персон равном 0"); }else {

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