Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import java.util.ArrayList;

public class Calculator {

private final int peopleCount;
private double chequeSum;
private final ArrayList<Product> productArrayList = new ArrayList<>();


Calculator(int peopleCount){
this.peopleCount = peopleCount;
}
//Добавление продукта и подсчет суммы
public void addProduct(String name, double cost){
Product product = new Product(name, cost);
productArrayList.add(product);
}
//Вывод списка товаров на экран
public void getProductList(){
productArrayList.forEach(product -> System.out.println(product.getName()));
}
//Подсчитывает и возвращает сумму, которую должен заплатить человек
public double peopleCheque(){
productArrayList.forEach(product -> chequeSum = chequeSum + product.getCost());
return chequeSum/(double) peopleCount;
}

}
5 changes: 4 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");

MainMenu mainMenu = new MainMenu();
mainMenu.start();

}
}
100 changes: 100 additions & 0 deletions src/main/java/MainMenu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import java.util.Scanner;

public class MainMenu {
private Calculator calculator;

//Стартовое меню
public void start(){

System.out.println("Приветствую UserName!\nНа скольких человек необходимо разделить счёт?");
Scanner scanner = new Scanner(System.in);
for(;;){
try{
int peopleCount = scanner.nextInt();
if (peopleCount <= 1){
System.out.println("Введено не корректное количество человек, пожалуйста попробуйте снова");
} else {
calculator = new Calculator(peopleCount);
additionalMenu();
break;
}
} catch (Exception e){
System.out.println("Ошибка ввода. Необходимо ввести целое число");
scanner.nextLine();
}
}

}
//Дополнительное меню для работы непосредственно с калькулятором
private void additionalMenu(){

Scanner scanner = new Scanner(System.in);
String command = "";

while (!command.equalsIgnoreCase("Завершить")){

calculator.addProduct(addProductName(), addProductCost());
command = scanner.next();

}

showChequeAndProducts();

}
//Метод для передачи названия товара
private String addProductName(){

Scanner scanner = new Scanner(System.in);
System.out.println("Введите название товара");
return scanner.nextLine();

}
//Метод для передачи стоимости товара
private double addProductCost(){
Scanner scanner = new Scanner(System.in);
System.out.println("Введите стоимость");
for(;;) {
try {
double cost = scanner.nextDouble();
if (cost <= 0) {
System.out.println("Введена не корректная сумма, попробуйте ещё раз");
} else {
System.out.println("Товар успешно добавлен");
System.out.println("Хотите добавить еще товар?\nДля продолжения введите любой символ\nДля завершения введите \"Завершить\"");
return cost;
}
} catch (Exception e) {
System.out.println("Ошибка ввода суммы\nНеобходимо вводить числа с плавающей точкой, разделяя их запятой или целое число\nПопробуйте снова");
scanner.nextLine();
}
}
}
//Выводим сумму на человека и название товаров
private void showChequeAndProducts(){

System.out.println("Добавленные товар:");
calculator.getProductList();
double cheque = calculator.peopleCheque();
System.out.printf(String.format("Сумма на человека %.2f %s", cheque, getRubCase(cheque)));

}
//Передаёт правильный падеж слова "рубль" в зависимости от суммы
private String getRubCase(double cheque){
if (((int) cheque % 100) > 10 && ((int) cheque % 100 < 15)){
return "рублей";
} else {
switch ((int) cheque % 10) {
case (1) -> {
return "рубль";
}
case (2), (3), (4) -> {
return "рубля";
}
default -> {
return "рублей";
}
}
}
}

}
19 changes: 19 additions & 0 deletions src/main/java/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
public class Product {

private final String name;
private final double cost;

Product(String name, double cost){
this.cost = cost;
this.name = name;
}

public String getName(){
return name;
}

public double getCost(){
return cost;
}

}