diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 000000000..677c039fe --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,53 @@ +import java.util.ArrayList; + +public class Calculator { + public Calculator(int personCount, ArrayList dishesList) { + calculate(personCount, dishesList); + } + + private void calculate(int personCount, ArrayList dishesList){ + showDishList(dishesList); + totalPriceForPerson(personCount, dishesList); + } + + private String getRightEnding(double price){ + String ending = ""; + String x = "рубль"; + String y = "рубля"; + String z = "рублей"; + if(price%100 >= 11 && price%100 <= 14){ + ending = z; + return ending; + } + if(price%10 == 1){ + ending = x; + return ending; + } + if(price%10 == 2 || price%10 == 3 || price%10 == 4){ + ending = y; + return ending; + } + return z; + } + + private void showDishList(ArrayList dishesList){ + System.out.println("Добавленные товары:"); + double price; + for(int i = 0; i < dishesList.size(); i++){ + price = dishesList.get(i).getPrice(); + String ending = getRightEnding(price); + System.out.println("Позиция: " + dishesList.get(i).getName() + " Цена: " + String.format("%.2f", dishesList.get(i).getPrice()) + " " + ending); + } + } + + private void totalPriceForPerson(int personCount, ArrayList dishesList){ + Double totalPrice = 0.0; + for(int i = 0; i < dishesList.size(); i++){ + totalPrice = totalPrice + dishesList.get(i).getPrice(); + } + totalPrice = totalPrice / personCount; + double price = totalPrice; + String ending = getRightEnding(price); + System.out.println("Итоговая цена для каждой персоны: " + String.format("%.2f", totalPrice) + " " + ending); + } +} diff --git a/src/main/java/Dish.java b/src/main/java/Dish.java new file mode 100644 index 000000000..42d06164b --- /dev/null +++ b/src/main/java/Dish.java @@ -0,0 +1,57 @@ +import java.util.Scanner; + +public class Dish { + + private Double price; + private String name; + + public Dish() { + setName(); + setPrice(); + System.out.println("Позиция успешно добавлена!"); + } + + public Double getPrice() { + return price; + } + + public String getName() { + return name; + } + + public void setName() { + Scanner scanner = new Scanner(System.in); + while(true){ + System.out.println("Введите название блюда."); + String line = scanner.nextLine(); + if(line.trim().isEmpty()){ + System.out.println("Ничего не введено. Попробуйте снова"); + continue; + } + else{ + name = line; + break; + } + } + } + + public void setPrice() { + Scanner scanner; + while(true){ + System.out.println("Укажите стоимость " + name); + scanner = new Scanner(System.in);; + if(!scanner.hasNextDouble()){ + System.out.println("Нужно число без букв. Попробуйте снова"); + continue; + } + price = scanner.nextDouble(); + if(price <= 0.0){ + System.out.println("Цена должна быть положительной. Попробуйте снова"); + continue; + } + else{ + break; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c435..97142c752 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,49 @@ +import java.util.ArrayList; +import java.util.Scanner; + +// dev branch for Y.Practicum public class Main { public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + Double price; + String name; + + ArrayList dishesList = new ArrayList<>(); + + int personCount = getPersonCount(); + + Scanner scanner = new Scanner(System.in); + String line = ""; + while(true){ + dishesList.add(new Dish()); + System.out.println("Для добавления нового товара введите что угодно. Для завершения введите 'завершить'"); + line = scanner.nextLine(); + if(line.equalsIgnoreCase("завершить")){ + System.out.println("Составление списка успешно завершино"); + break; + } + } + Calculator calculator = new Calculator(personCount, dishesList); + + } + private static int getPersonCount(){ + Scanner scanner; + while(true){ + System.out.println("На скольких человек необходимо разделить счёт?"); + scanner = new Scanner(System.in); + if(!scanner.hasNextInt()){ + System.out.println("Нужно целое число без букв. Попробуйте снова"); + continue; + } + int personCount = scanner.nextInt(); + if(personCount < 2){ + System.out.println("Число персон должно быть не меньше двух. Попробуйте снова"); + continue; + } + else{ + System.out.println("Счёт будет разделён на " + personCount + " персоны"); + return personCount; + } + } } -} +} \ No newline at end of file