From f52e5880b85431d6974666170d231c8f80ea06e6 Mon Sep 17 00:00:00 2001 From: Trofiproll Date: Wed, 6 Sep 2023 16:20:16 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=94=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 76 +++++++++++++++++++++++++++++++++++ src/main/java/Main.java | 21 +++++++++- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Calculator.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..a9a1728c0 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,76 @@ +import java.util.Scanner; + +public class Calculator { + private final int guestsNumber; + private int productsNumber; + private double[] prices; + private String[] products; + + + Calculator(int guestsNumber){ + this.guestsNumber = guestsNumber; + productsNumber = 0; + prices = new double[10]; + products = new String[10]; + System.out.printf("Счёт на %d человек создан!\nДобавляйте товары в формате \"Товар рубли.копейки\". Для завершения добавления введите \"Завершить\".\n", guestsNumber); + } + + void addProducts(){ + Scanner in = new Scanner(System.in); + String inputString = in.next(); + double inputDouble; + + while(!inputString.equalsIgnoreCase("Завершить")){ + if(productsNumber>= products.length) update(); + + while(true) { + if(in.hasNextDouble()){ + inputDouble = in.nextDouble(); + if(inputDouble < 0){ + System.out.printf("Введено число меньше нуля. Введите стоимость товара \"%s\" ещё раз.\n", inputString); + continue; + } + break; + } + else if(in.hasNext()){ + System.out.printf("Это не число. Введите стоимость товара \"%s\" ещё раз.\n", inputString); + in.next(); + } + } + + products[productsNumber] = inputString; + prices[productsNumber++] = inputDouble; + System.out.printf("Товар \"%s\" успешно добавлен.\n", products[productsNumber - 1]); + inputString = in.next(); + } + System.out.println("Добавление товаров завершено.\n"); + } + + void calcutate(){ + double sumAllPrices = 0; + System.out.println("Добавленные товары:"); + for(int i = 0; i < productsNumber; i++){ + System.out.printf("%s %.2f\n", products[i], prices[i]); + sumAllPrices += prices[i]; + } + double priceForEach = sumAllPrices / guestsNumber; + String rouble = switch ((int)priceForEach % 10){ + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + System.out.printf("С каждого %.2f %s.\n", priceForEach, rouble); + } + + + private void update(){ + double[] pricesCopy = new double[prices.length]; + String[] productsCopy = new String[products.length]; + System.arraycopy(prices, 0, pricesCopy, 0, prices.length); + System.arraycopy(products, 0, productsCopy, 0, products.length); + prices = new double[pricesCopy.length * 2]; + products = new String[productsCopy.length * 2]; + System.arraycopy(pricesCopy, 0, prices, 0, pricesCopy.length); + System.arraycopy(productsCopy, 0, products, 0, productsCopy.length); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..930ffefba 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,25 @@ +import java.util.Locale; +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Locale.setDefault(Locale.ENGLISH); + Scanner in = new Scanner(System.in); + System.out.println("На сколько человек нужно разделить счёт?"); + int guestsNumber; + while(true) { + if (in.hasNextInt()) { + guestsNumber = in.nextInt(); + if(guestsNumber> 1) break; + else System.out.println("Введено число меньше 2. Повторите попытку"); + } else if (in.hasNext()) { + System.out.println("Некорректный ввод. Повторите попытку"); + in.next(); + } + } + + Calculator bill = new Calculator(guestsNumber); + bill.addProducts(); + bill.calcutate(); } } \ No newline at end of file From a906bb08818dc12d5c46b84beb55b74aa0054132 Mon Sep 17 00:00:00 2001 From: Trofiproll Date: Thu, 7 Sep 2023 14:01:44 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=B4=D0=B7=20=D0=BF=D0=BE=D0=BF=D1=8B?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 76 +++++++++++++++++++++++++++++++++++ src/main/java/Main.java | 21 +++++++++- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Calculator.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..a9a1728c0 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,76 @@ +import java.util.Scanner; + +public class Calculator { + private final int guestsNumber; + private int productsNumber; + private double[] prices; + private String[] products; + + + Calculator(int guestsNumber){ + this.guestsNumber = guestsNumber; + productsNumber = 0; + prices = new double[10]; + products = new String[10]; + System.out.printf("Счёт на %d человек создан!\nДобавляйте товары в формате \"Товар рубли.копейки\". Для завершения добавления введите \"Завершить\".\n", guestsNumber); + } + + void addProducts(){ + Scanner in = new Scanner(System.in); + String inputString = in.next(); + double inputDouble; + + while(!inputString.equalsIgnoreCase("Завершить")){ + if(productsNumber>= products.length) update(); + + while(true) { + if(in.hasNextDouble()){ + inputDouble = in.nextDouble(); + if(inputDouble < 0){ + System.out.printf("Введено число меньше нуля. Введите стоимость товара \"%s\" ещё раз.\n", inputString); + continue; + } + break; + } + else if(in.hasNext()){ + System.out.printf("Это не число. Введите стоимость товара \"%s\" ещё раз.\n", inputString); + in.next(); + } + } + + products[productsNumber] = inputString; + prices[productsNumber++] = inputDouble; + System.out.printf("Товар \"%s\" успешно добавлен.\n", products[productsNumber - 1]); + inputString = in.next(); + } + System.out.println("Добавление товаров завершено.\n"); + } + + void calcutate(){ + double sumAllPrices = 0; + System.out.println("Добавленные товары:"); + for(int i = 0; i < productsNumber; i++){ + System.out.printf("%s %.2f\n", products[i], prices[i]); + sumAllPrices += prices[i]; + } + double priceForEach = sumAllPrices / guestsNumber; + String rouble = switch ((int)priceForEach % 10){ + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + System.out.printf("С каждого %.2f %s.\n", priceForEach, rouble); + } + + + private void update(){ + double[] pricesCopy = new double[prices.length]; + String[] productsCopy = new String[products.length]; + System.arraycopy(prices, 0, pricesCopy, 0, prices.length); + System.arraycopy(products, 0, productsCopy, 0, products.length); + prices = new double[pricesCopy.length * 2]; + products = new String[productsCopy.length * 2]; + System.arraycopy(pricesCopy, 0, prices, 0, pricesCopy.length); + System.arraycopy(productsCopy, 0, products, 0, productsCopy.length); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..930ffefba 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,25 @@ +import java.util.Locale; +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Locale.setDefault(Locale.ENGLISH); + Scanner in = new Scanner(System.in); + System.out.println("На сколько человек нужно разделить счёт?"); + int guestsNumber; + while(true) { + if (in.hasNextInt()) { + guestsNumber = in.nextInt(); + if(guestsNumber> 1) break; + else System.out.println("Введено число меньше 2. Повторите попытку"); + } else if (in.hasNext()) { + System.out.println("Некорректный ввод. Повторите попытку"); + in.next(); + } + } + + Calculator bill = new Calculator(guestsNumber); + bill.addProducts(); + bill.calcutate(); } } \ No newline at end of file From af0e03d0c43e039742b3c924196fbe9c04bd16de Mon Sep 17 00:00:00 2001 From: Trofiproll Date: 2023年9月14日 19:04:10 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=94=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index a9a1728c0..e1ace3147 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -28,9 +28,8 @@ void addProducts(){ inputDouble = in.nextDouble(); if(inputDouble < 0){ System.out.printf("Введено число меньше нуля. Введите стоимость товара \"%s\" ещё раз.\n", inputString); - continue; } - break; + else break; } else if(in.hasNext()){ System.out.printf("Это не число. Введите стоимость товара \"%s\" ещё раз.\n", inputString); @@ -54,11 +53,15 @@ void calcutate(){ sumAllPrices += prices[i]; } double priceForEach = sumAllPrices / guestsNumber; - String rouble = switch ((int)priceForEach % 10){ - case 1 -> "рубль"; - case 2, 3, 4 -> "рубля"; - default -> "рублей"; - }; + String rouble; + if((int)priceForEach <= 14 && (int)priceForEach>= 11) rouble = "рублей"; + else { + rouble = switch ((int)priceForEach % 10){ + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; + } System.out.printf("С каждого %.2f %s.\n", priceForEach, rouble); } From 4b30411e9ba5e32cc18791951cd3fefb66e1eb19 Mon Sep 17 00:00:00 2001 From: Trofiproll Date: 2023年9月14日 19:05:54 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=94=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index a1dcdd060..34eef2fe6 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,7 +1,7 @@ import java.util.Scanner; public class Calculator { - private final int guestsNumber; + private int guestsNumber; private int productsNumber; private double[] prices; private String[] products; @@ -28,14 +28,8 @@ void addProducts(){ inputDouble = in.nextDouble(); if(inputDouble < 0){ System.out.printf("Введено число меньше нуля. Введите стоимость товара \"%s\" ещё раз.\n", inputString); -<<<<<<< HEAD } else break; -======= - continue; - } - break; ->>>>>>> origin/dev } else if(in.hasNext()){ System.out.printf("Это не число. Введите стоимость товара \"%s\" ещё раз.\n", inputString); @@ -59,7 +53,6 @@ void calcutate(){ sumAllPrices += prices[i]; } double priceForEach = sumAllPrices / guestsNumber; -<<<<<<< HEAD String rouble; if((int)priceForEach <= 14 && (int)priceForEach>= 11) rouble = "рублей"; else { @@ -69,13 +62,6 @@ void calcutate(){ default -> "рублей"; }; } -======= - String rouble = switch ((int)priceForEach % 10){ - case 1 -> "рубль"; - case 2, 3, 4 -> "рубля"; - default -> "рублей"; - }; ->>>>>>> origin/dev System.out.printf("С каждого %.2f %s.\n", priceForEach, rouble); } From dd832f30258b70faa5ee2a06ca478f1327125a2c Mon Sep 17 00:00:00 2001 From: Trofiproll Date: 2023年9月16日 23:21:22 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20"=D1=87=D0=B5=D0=BB=D0=BE=D0=B2=D0=B5=D0=BA",=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 102 ++++++++++++++++------------------ src/main/java/Main.java | 12 ++-- 2 files changed, 56 insertions(+), 58 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 34eef2fe6..41a1d5577 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,79 +1,73 @@ +import java.util.ArrayList; import java.util.Scanner; public class Calculator { private int guestsNumber; - private int productsNumber; - private double[] prices; - private String[] products; + private ArrayList items; + private ArrayList prices; + Calculator(int guestsNumber){ this.guestsNumber = guestsNumber; - productsNumber = 0; - prices = new double[10]; - products = new String[10]; - System.out.printf("Счёт на %d человек создан!\nДобавляйте товары в формате \"Товар рубли.копейки\". Для завершения добавления введите \"Завершить\".\n", guestsNumber); + items = new ArrayList(); + prices = new ArrayList(); + String persons; + if(guestsNumber>= 11 && guestsNumber <= 14) persons = "человек"; + else persons = switch (guestsNumber%10){ + case 1,2,3,4 -> "человека"; + default -> "человек"; + }; + System.out.printf("Счёт на %d %s создан!\n" + + "Добавляйте товары в формате \"<Товар> <стоимость>\".\n" + + "Название товара может состоять из нескольких слов.\n" + + "Для завершения добавления введите \"Завершить\".\n\n", guestsNumber, persons); } void addProducts(){ Scanner in = new Scanner(System.in); - String inputString = in.next(); - double inputDouble; - - while(!inputString.equalsIgnoreCase("Завершить")){ - if(productsNumber>= products.length) update(); - - while(true) { - if(in.hasNextDouble()){ - inputDouble = in.nextDouble(); - if(inputDouble < 0){ - System.out.printf("Введено число меньше нуля. Введите стоимость товара \"%s\" ещё раз.\n", inputString); - } - else break; + String inputItem = ""; + double inputPrice; + while(true){ + while(in.hasNext() && !in.hasNextDouble()){ + if(inputItem.isEmpty()) inputItem += in.next(); + else inputItem += ' ' + in.next(); + if(inputItem.equalsIgnoreCase("завершить")){ + System.out.println("Добавление товаров завершено"); + return; } - else if(in.hasNext()){ - System.out.printf("Это не число. Введите стоимость товара \"%s\" ещё раз.\n", inputString); - in.next(); + } + if(in.hasNextDouble()){ + if(!inputItem.isEmpty()){ + inputPrice = in.nextDouble(); + items.add(inputItem); + prices.add(inputPrice); + System.out.printf("Товар '%s' по цене %.2f успешно добавлен\n", inputItem, inputPrice); + inputItem = ""; } + else in.next(); } - - products[productsNumber] = inputString; - prices[productsNumber++] = inputDouble; - System.out.printf("Товар \"%s\" успешно добавлен.\n", products[productsNumber - 1]); - inputString = in.next(); } - System.out.println("Добавление товаров завершено.\n"); } void calcutate(){ double sumAllPrices = 0; - System.out.println("Добавленные товары:"); - for(int i = 0; i < productsNumber; i++){ - System.out.printf("%s %.2f\n", products[i], prices[i]); - sumAllPrices += prices[i]; + System.out.println("\nДобавленные товары:"); + for(int i = 0; i < items.size(); i++){ + System.out.printf("%s %.2f\n", items.get(i), prices.get(i)); + sumAllPrices += prices.get(i); } + System.out.printf("\nВсего на %.2f %s.\n", sumAllPrices, rouble(sumAllPrices)); double priceForEach = sumAllPrices / guestsNumber; - String rouble; - if((int)priceForEach <= 14 && (int)priceForEach>= 11) rouble = "рублей"; - else { - rouble = switch ((int)priceForEach % 10){ - case 1 -> "рубль"; - case 2, 3, 4 -> "рубля"; - default -> "рублей"; - }; - } - System.out.printf("С каждого %.2f %s.\n", priceForEach, rouble); + System.out.printf("\nС каждого %.2f %s.\n", priceForEach, rouble(priceForEach)); } - - private void update(){ - double[] pricesCopy = new double[prices.length]; - String[] productsCopy = new String[products.length]; - System.arraycopy(prices, 0, pricesCopy, 0, prices.length); - System.arraycopy(products, 0, productsCopy, 0, products.length); - prices = new double[pricesCopy.length * 2]; - products = new String[productsCopy.length * 2]; - System.arraycopy(pricesCopy, 0, prices, 0, pricesCopy.length); - System.arraycopy(productsCopy, 0, products, 0, productsCopy.length); + private String rouble(double price){ + if(price> 10 && price < 15) return "рублей"; + else return switch ((int)price % 10){ + case 1 -> "рубль"; + case 2, 3, 4 -> "рубля"; + default -> "рублей"; + }; } -} +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 930ffefba..0d446e434 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -4,6 +4,13 @@ public class Main { public static void main(String[] args) { Locale.setDefault(Locale.ENGLISH); + + Calculator bill = new Calculator(parseGuestNumber()); + bill.addProducts(); + bill.calcutate(); + } + + private static int parseGuestNumber(){ Scanner in = new Scanner(System.in); System.out.println("На сколько человек нужно разделить счёт?"); int guestsNumber; @@ -17,9 +24,6 @@ public static void main(String[] args) { in.next(); } } - - Calculator bill = new Calculator(guestsNumber); - bill.addProducts(); - bill.calcutate(); + return guestsNumber; } } \ No newline at end of file From 02911fbffd94877e9e96b3ed54752038c9d18997 Mon Sep 17 00:00:00 2001 From: Trofiproll Date: 2023年9月16日 23:34:28 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20=D1=81=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=89=D0=B5=D0=B9=20=D1=81=D1=83=D0=BC=D0=BC=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=82=D0=BE=D0=B2=D0=B0=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 41a1d5577..540605f85 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -3,6 +3,7 @@ public class Calculator { private int guestsNumber; + private double totalSum = 0; private ArrayList items; private ArrayList prices; @@ -42,6 +43,7 @@ void addProducts(){ inputPrice = in.nextDouble(); items.add(inputItem); prices.add(inputPrice); + totalSum += inputPrice; System.out.printf("Товар '%s' по цене %.2f успешно добавлен\n", inputItem, inputPrice); inputItem = ""; } @@ -51,14 +53,12 @@ void addProducts(){ } void calcutate(){ - double sumAllPrices = 0; System.out.println("\nДобавленные товары:"); for(int i = 0; i < items.size(); i++){ System.out.printf("%s %.2f\n", items.get(i), prices.get(i)); - sumAllPrices += prices.get(i); } - System.out.printf("\nВсего на %.2f %s.\n", sumAllPrices, rouble(sumAllPrices)); - double priceForEach = sumAllPrices / guestsNumber; + System.out.printf("\nВсего на %.2f %s.\n", totalSum, rouble(totalSum)); + double priceForEach = totalSum / guestsNumber; System.out.printf("\nС каждого %.2f %s.\n", priceForEach, rouble(priceForEach)); }

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