From 6d356f8181dce52b483e5650eeca2c85bb3764a2 Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年5月12日 13:20:56 +0300 Subject: [PATCH 1/7] first try to complete homework --- src/main/java/Calculator.java | 11 +++++ src/main/java/Command.java | 3 ++ src/main/java/Formatter.java | 29 +++++++++++ src/main/java/Good.java | 9 ++++ src/main/java/Main.java | 90 ++++++++++++++++++++++++++++++++++- 5 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Calculator.java create mode 100644 src/main/java/Command.java create mode 100644 src/main/java/Formatter.java create mode 100644 src/main/java/Good.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..013b6ded1 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,11 @@ +import java.util.ArrayList; + +public class Calculator { + static float calculate(ArrayList receipt, int numberOfGuests) { + float totalPrice = 0; + for (Good good : receipt) { + totalPrice += good.price; + } + return totalPrice / numberOfGuests; + } +} diff --git a/src/main/java/Command.java b/src/main/java/Command.java new file mode 100644 index 000000000..c486ee70b --- /dev/null +++ b/src/main/java/Command.java @@ -0,0 +1,3 @@ +public class Command { + static String command; +} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java new file mode 100644 index 000000000..23a2f4210 --- /dev/null +++ b/src/main/java/Formatter.java @@ -0,0 +1,29 @@ +import java.util.ArrayList; + +public class Formatter { + + static String getFormattedOutput(float price) { + int resultInt = (int) price; + + String rubles; + if (resultInt <= 19 && resultInt>= 11) { + rubles = "рублей"; + } else if (resultInt % 10>= 2 && resultInt % 10 <= 4) { + rubles = "рубля"; + } else if (resultInt % 10 == 1) { + rubles = "рубль"; + } else { + rubles = "рублей"; + } + return String.format("С каждого по %.2f %s", price, rubles); + } + + static String getFormattedGoods(ArrayList goods) { + StringBuilder result = new StringBuilder(); + result.append("Добавленные товары:\n"); + for (Good good : goods) { + result.append(good.name).append('\n'); + } + return result.toString().trim(); + } +} diff --git a/src/main/java/Good.java b/src/main/java/Good.java new file mode 100644 index 000000000..7cc8718ff --- /dev/null +++ b/src/main/java/Good.java @@ -0,0 +1,9 @@ +public class Good { + float price; + String name; + + public Good(float price, String name) { + this.price = price; + this.name = name; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..175580c80 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,92 @@ +import java.util.ArrayList; +import java.util.Scanner; public class Main { + private final static String GREET = "На сколько человек требуется разделить счёт?"; + private final static String ERRORINCORRECTNUMBER = "Введено некорректное число. \nВведите корректное число."; + private final static String ADDINGNEWGOOD = "Добавление товара. Ведите наименование товара или 'Завершить' для перехода к расчёту чека"; public static void main(String[] args) { - System.out.println("Hello world!"); + ArrayList receipt = new ArrayList(); + + + System.out.println(GREET); + Scanner scanner = new Scanner(System.in); + int number = inputNumber(scanner); + while (number <= 1) { + System.out.println(ERRORINCORRECTNUMBER); + number = inputNumber(scanner); + } + + + System.out.println(ADDINGNEWGOOD); + String name = scanner.nextLine(); + while (!name.equalsIgnoreCase("завершить")) { + System.out.println("Введите цену товара:"); + float price = inputFloat(scanner); + while (price < 0) { + System.out.println(ERRORINCORRECTNUMBER); + price = inputFloat(scanner); + } + Good good = new Good(price, name); + receipt.add(good); + System.out.println(ADDINGNEWGOOD); + name = scanner.nextLine(); + } + float result = Calculator.calculate(receipt, number); + System.out.println(Formatter.getFormattedGoods(receipt)); + System.out.println(Formatter.getFormattedOutput(result)); + } + + static boolean checkForInt(String string) { + boolean isWasMinus = false; + for (int i = 0; i < string.length(); ++i) { + if (!Character.isDigit(string.charAt(i))) { + if (!Character.isDigit(string.charAt(i))) { + if (string.charAt(i) == '-' && !isWasMinus) { + isWasMinus = true; + } else { + return false; + } + } + } + } + return true; + } + + static int inputNumber(Scanner scanner) { + String numberOfGuests = scanner.nextLine(); + while (!checkForInt(numberOfGuests)) { + System.out.println(ERRORINCORRECTNUMBER); + numberOfGuests = scanner.nextLine(); + + } + return Integer.parseInt(numberOfGuests); + } + + static boolean checkForFloat(String string) { + boolean isWasDot = false; + boolean isWasMinus = false; + for (int i = 0; i < string.length(); ++i) { + if (!Character.isDigit(string.charAt(i))) { + if (string.charAt(i) == '-' && !isWasMinus) { + isWasMinus = true; + } else if (string.charAt(i) == '.' && !isWasDot) { + isWasDot = true; + } else { + return false; + } + } + } + return true; + } + + static float inputFloat(Scanner scanner) { + String numberOfGuests = scanner.nextLine(); + while (!checkForFloat(numberOfGuests)) { + System.out.println(ERRORINCORRECTNUMBER); + numberOfGuests = scanner.nextLine(); + + } + return Float.parseFloat(numberOfGuests); } -} \ No newline at end of file +} From 6b7318118eb1af44a38c03ff42646bdf3b8af1cb Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年5月12日 13:21:54 +0300 Subject: [PATCH 2/7] first try to complete homework --- src/main/java/Command.java | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 src/main/java/Command.java diff --git a/src/main/java/Command.java b/src/main/java/Command.java deleted file mode 100644 index c486ee70b..000000000 --- a/src/main/java/Command.java +++ /dev/null @@ -1,3 +0,0 @@ -public class Command { - static String command; -} From 15505700d9a6f3644e00e3b2edc3a7f353b617c1 Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年5月12日 19:31:13 +0300 Subject: [PATCH 3/7] first try to complete homework --- src/main/java/Main.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 175580c80..01cc38b01 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -4,7 +4,7 @@ public class Main { private final static String GREET = "На сколько человек требуется разделить счёт?"; private final static String ERRORINCORRECTNUMBER = "Введено некорректное число. \nВведите корректное число."; - private final static String ADDINGNEWGOOD = "Добавление товара. Ведите наименование товара или 'Завершить' для перехода к расчёту чека"; + private final static String ADDNEWGOOD = "Добавление товара. Ведите наименование товара или 'Завершить' для перехода к расчёту чека"; public static void main(String[] args) { ArrayList receipt = new ArrayList(); @@ -18,7 +18,7 @@ public static void main(String[] args) { } - System.out.println(ADDINGNEWGOOD); + System.out.println(ADDNEWGOOD); String name = scanner.nextLine(); while (!name.equalsIgnoreCase("завершить")) { System.out.println("Введите цену товара:"); @@ -29,7 +29,7 @@ public static void main(String[] args) { } Good good = new Good(price, name); receipt.add(good); - System.out.println(ADDINGNEWGOOD); + System.out.println(ADDNEWGOOD); name = scanner.nextLine(); } float result = Calculator.calculate(receipt, number); From 153e2e69e24951da4710e84088ebbe31acf5e80c Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年6月14日 14:15:54 +0300 Subject: [PATCH 4/7] added exeption catcher and fixed formatter workflow --- src/main/java/Formatter.java | 2 +- src/main/java/Main.java | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java index 23a2f4210..8e5ea2f14 100644 --- a/src/main/java/Formatter.java +++ b/src/main/java/Formatter.java @@ -6,7 +6,7 @@ static String getFormattedOutput(float price) { int resultInt = (int) price; String rubles; - if (resultInt <= 19 && resultInt>= 11) { + if (resultInt % 100 <= 19 && resultInt % 100>= 11) { rubles = "рублей"; } else if (resultInt % 10>= 2 && resultInt % 10 <= 4) { rubles = "рубля"; diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 01cc38b01..801959113 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,8 +3,9 @@ public class Main { private final static String GREET = "На сколько человек требуется разделить счёт?"; - private final static String ERRORINCORRECTNUMBER = "Введено некорректное число. \nВведите корректное число."; - private final static String ADDNEWGOOD = "Добавление товара. Ведите наименование товара или 'Завершить' для перехода к расчёту чека"; + private final static String ERROR_INCORRECT_NUMBER = "Введено некорректное число. \nВведите корректное число."; + private final static String ADD_NEW_GOOD = "Добавление товара. Ведите наименование товара или 'Завершить' для перехода к расчёту чека"; + public static void main(String[] args) { ArrayList receipt = new ArrayList(); @@ -13,24 +14,31 @@ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int number = inputNumber(scanner); while (number <= 1) { - System.out.println(ERRORINCORRECTNUMBER); + System.out.println(ERROR_INCORRECT_NUMBER); number = inputNumber(scanner); } - System.out.println(ADDNEWGOOD); + System.out.println(ADD_NEW_GOOD); String name = scanner.nextLine(); while (!name.equalsIgnoreCase("завершить")) { System.out.println("Введите цену товара:"); float price = inputFloat(scanner); + while (price < 0) { - System.out.println(ERRORINCORRECTNUMBER); - price = inputFloat(scanner); + System.out.println(ERROR_INCORRECT_NUMBER); + try { + price = inputFloat(scanner); + } catch (Exception exception) { + System.out.println(ERROR_INCORRECT_NUMBER); + } } + Good good = new Good(price, name); receipt.add(good); - System.out.println(ADDNEWGOOD); + System.out.println(ADD_NEW_GOOD); name = scanner.nextLine(); + } float result = Calculator.calculate(receipt, number); System.out.println(Formatter.getFormattedGoods(receipt)); @@ -56,7 +64,7 @@ static boolean checkForInt(String string) { static int inputNumber(Scanner scanner) { String numberOfGuests = scanner.nextLine(); while (!checkForInt(numberOfGuests)) { - System.out.println(ERRORINCORRECTNUMBER); + System.out.println(ERROR_INCORRECT_NUMBER); numberOfGuests = scanner.nextLine(); } @@ -83,7 +91,7 @@ static boolean checkForFloat(String string) { static float inputFloat(Scanner scanner) { String numberOfGuests = scanner.nextLine(); while (!checkForFloat(numberOfGuests)) { - System.out.println(ERRORINCORRECTNUMBER); + System.out.println(ERROR_INCORRECT_NUMBER); numberOfGuests = scanner.nextLine(); } From e73912e374bd359b8a906133f76529df93e1a1a9 Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年6月15日 21:32:17 +0300 Subject: [PATCH 5/7] added exeptions for inputs --- src/main/java/Main.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 801959113..3d2e37711 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -11,11 +11,16 @@ public static void main(String[] args) { System.out.println(GREET); + int number = 1; Scanner scanner = new Scanner(System.in); - int number = inputNumber(scanner); + //int number = inputNumber(scanner); + while (number <= 1) { - System.out.println(ERROR_INCORRECT_NUMBER); - number = inputNumber(scanner); + try { + number = inputNumber(scanner); + } catch (Exception e) { + System.out.println(ERROR_INCORRECT_NUMBER); + } } @@ -23,10 +28,10 @@ public static void main(String[] args) { String name = scanner.nextLine(); while (!name.equalsIgnoreCase("завершить")) { System.out.println("Введите цену товара:"); - float price = inputFloat(scanner); + float price = -1; while (price < 0) { - System.out.println(ERROR_INCORRECT_NUMBER); + try { price = inputFloat(scanner); } catch (Exception exception) { From 09882f895711a5a4631dc1b55ecab86117a85ddb Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年6月16日 16:06:28 +0300 Subject: [PATCH 6/7] final fixes --- src/main/java/Main.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 3d2e37711..04d151654 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -18,6 +18,9 @@ public static void main(String[] args) { while (number <= 1) { try { number = inputNumber(scanner); + if (number <= 1) { + System.out.println(ERROR_INCORRECT_NUMBER); + } } catch (Exception e) { System.out.println(ERROR_INCORRECT_NUMBER); } From 81e577d6aac12b60ebf56e0d759f758f77fdd63e Mon Sep 17 00:00:00 2001 From: Venser Date: 2024年6月21日 14:02:57 +0300 Subject: [PATCH 7/7] final fixes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 63be1bfe0..b07701a8f 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Пустой репозиторий для работы с Java кодом в Android Studio +# Уже не пустой репозиторий для работы с Java кодом в Android Studio

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