diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..9e48b1683 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,15 @@ +public class Calculator { + int howManyPals; + + public void addPals(int howManyPals) { + this.howManyPals = howManyPals; + } + + public Double split(Double total, int pals) { + return total / pals; + } + + public int returnPals() { + return howManyPals; + } +} diff --git a/src/main/java/Checkers.java b/src/main/java/Checkers.java new file mode 100644 index 000000000..36362736c --- /dev/null +++ b/src/main/java/Checkers.java @@ -0,0 +1,52 @@ +import java.util.Scanner; +import java.util.Locale; +import java.util.InputMismatchException; + +public class Checkers { + public int isInt() { + Scanner scan = new Scanner(System.in); + int intToCheck; + + while (true) { + try { + intToCheck = scan.nextInt(); + } catch (InputMismatchException e) { + System.out.println("Не-а, введите корректное число!"); + scan.next(); + continue; + } + + if (intToCheck> 1) { + return intToCheck; + } else if (intToCheck == 1) { + System.out.println("Так Вы же один, чего тут считать? :O"); + } else if (intToCheck < 0) { + System.out.println("Введите положительное число!"); + } else { + System.out.println("Никто не пришел на ужин? :C"); + } + } + } + + public Double isCorrectCost() { + Scanner scan = new Scanner(System.in).useLocale(Locale.US); + Formatter formatter = new Formatter(); + Double validDouble; + + while (true) { + try { + validDouble = scan.nextDouble(); + } catch (InputMismatchException e) { + System.out.println("Введите корректную стоимость!"); + scan.next(); + continue; + } + + if (validDouble < 0.01) { + System.out.println("Цена должна быть больше нуля!"); + } else { + return formatter.formatDouble(validDouble); + } + } + } +} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java new file mode 100644 index 000000000..6335f2e4f --- /dev/null +++ b/src/main/java/Formatter.java @@ -0,0 +1,26 @@ +public class Formatter { + public String correctCost(Double cost) { + int remainder = ((int)(Math.floor(cost) % 10)); + String formattedCost; + + if ((cost * 10) - (int)(cost * 10) == 0) { + formattedCost = cost + "0"; + } else { + formattedCost = cost.toString(); + } + + if ((cost> 10 && cost < 15) || remainder == 0 || (remainder> 4 && remainder < 10)) { + formattedCost += " рублей"; + } else if (remainder == 1) { + formattedCost += " рубль"; + } else if (remainder> 1 && remainder < 5) { + formattedCost += " рубля"; + } + return formattedCost; + } + + public Double formatDouble(Double doubleToFormat) { + String strToDouble = String.format("%.2f", doubleToFormat).replace(",", "."); + return Double.valueOf(strToDouble); + } +} diff --git a/src/main/java/Goods.java b/src/main/java/Goods.java new file mode 100644 index 000000000..4739708e5 --- /dev/null +++ b/src/main/java/Goods.java @@ -0,0 +1,57 @@ +import java.util.ArrayList; +import java.util.Locale; +import java.util.Scanner; + +public class Goods { + ArrayList mealList = new ArrayList(); + ArrayList costList = new ArrayList(); + Double totalCost = 0.00; + + public void addMeal() { + Scanner scan = new Scanner(System.in).useLocale(Locale.US); + Checkers checker = new Checkers(); + boolean inputIsEmpty = false; + + for (int i = 0; true; i++) { + if (!inputIsEmpty) { + System.out.print(i == 0 ? "Введите название блюда: " : "Введите название блюда или \"Завершить\": "); + } else { + System.out.print("Введите хоть что-нибудь!: "); + inputIsEmpty = false; + } + String addNextMeal = scan.nextLine(); + + if (addNextMeal.equalsIgnoreCase("Завершить")) { + break; + } else if (addNextMeal.equals(" ") || addNextMeal.equals("")) { + inputIsEmpty = true; + continue; + } else { + mealList.add(addNextMeal); + } + + System.out.print("Введите стоимость блюда: "); + + Double addNextCost = checker.isCorrectCost(); + costList.add(addNextCost); + totalCost += addNextCost; + + System.out.println("\nТовар добавлен! Желаете добавить что-то еще?"); + } + } + + public void printTotalGoods() { + Formatter formatter = new Formatter(); + System.out.println("Добавленные товары:"); + + for (int i = 0; i < mealList.size(); i++) { + System.out.println(i + 1 + ". " + mealList.get(i) + " " + formatter.correctCost(costList.get(i))); + } + + System.out.println("Итог: " + formatter.correctCost(formatter.formatDouble(totalCost))); + } + + public Double returnTotalCost() { + return totalCost; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..21a339682 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,19 @@ - public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Checkers checker = new Checkers(); + Goods goods = new Goods(); + Calculator calculator = new Calculator(); + Formatter formatter = new Formatter(); + + System.out.println("Введите размер Вашей компании :)"); + + calculator.addPals(checker.isInt()); + + System.out.println("Окей, давайте Вас рассчитаем :)"); + + goods.addMeal(); + goods.printTotalGoods(); + Double total = calculator.split(goods.returnTotalCost(), calculator.returnPals()); + System.out.println("С каждого: " + formatter.correctCost(formatter.formatDouble(total))); } } \ No newline at end of file

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