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 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/Formatter.java b/src/main/java/Formatter.java new file mode 100644 index 000000000..8e5ea2f14 --- /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 % 100 <= 19 && resultInt % 100>= 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..04d151654 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,108 @@ +import java.util.ArrayList; +import java.util.Scanner; public class Main { + private final static String GREET = "На сколько человек требуется разделить счёт?"; + private final static String ERROR_INCORRECT_NUMBER = "Введено некорректное число. \nВведите корректное число."; + private final static String ADD_NEW_GOOD = "Добавление товара. Ведите наименование товара или 'Завершить' для перехода к расчёту чека"; + public static void main(String[] args) { - System.out.println("Hello world!"); + ArrayList receipt = new ArrayList(); + + + System.out.println(GREET); + int number = 1; + Scanner scanner = new Scanner(System.in); + //int number = inputNumber(scanner); + + 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); + } + } + + + System.out.println(ADD_NEW_GOOD); + String name = scanner.nextLine(); + while (!name.equalsIgnoreCase("завершить")) { + System.out.println("Введите цену товара:"); + float price = -1; + + while (price < 0) { + + 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(ADD_NEW_GOOD); + 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(ERROR_INCORRECT_NUMBER); + 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(ERROR_INCORRECT_NUMBER); + numberOfGuests = scanner.nextLine(); + + } + return Float.parseFloat(numberOfGuests); } -} \ No newline at end of file +}

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