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
27 changes: 27 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import java.util.HashMap;
import java.util.Map;

public class Calculator {
private Map<String, Double> products;

public Calculator() {
this.products = new HashMap<>();
}

public void addProduct(String name, double price) {
products.put(name, price);
}

public Map<String, Double> getProducts() {
return products;
}

public double calculateTotalCost() {
return products.values().stream().mapToDouble(Double::doubleValue).sum();
}

public double calculateCostPerPerson(int numberOfPeople) {
return calculateTotalCost() / numberOfPeople;
}
}

16 changes: 16 additions & 0 deletions src/main/java/Formatter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
public class Formatter {
public static String formatPrice(double price) {
return String.format("%.2f", price);
}

public static String rublesDeclension(double value) {
long intValue = (long) value;
if (intValue % 10 == 1 && intValue % 100 != 11) {
return "рубль";
} else if (intValue % 10 >= 2 && intValue % 10 <= 4 && (intValue % 100 < 10 || intValue % 100 >= 20)) {
return "рубля";
} else {
return "рублей";
}
}
}
66 changes: 65 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,70 @@
import java.util.Map;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Scanner scanner = new Scanner(System.in);
Calculator calculator = new Calculator();

int numberOfPeople = 0;
boolean isValidNumberOfPeople = false;

while (!isValidNumberOfPeople) {
try {
System.out.println("Количество людей в компании?");
numberOfPeople = Integer.parseInt(scanner.nextLine());

if (numberOfPeople > 1) {
isValidNumberOfPeople = true;
} else {
System.out.println("Введите число больше 1.");
}
} catch (NumberFormatException e) {
System.out.println("Ошибка ввода. Введите корректное количество людей.");
}
}

String productName;

while (true) {
System.out.println("Добавьте название товара (или введите 'завершить' для завершения):");
productName = scanner.nextLine();

if (productName.equalsIgnoreCase("завершить")) {
break;
}

double productPrice = 0;
boolean isValidPrice = false;

while (!isValidPrice) {
try {
System.out.println("Укажите стоимость товара:");
productPrice = Double.parseDouble(scanner.nextLine());

if (productPrice >= 0) {
isValidPrice = true;
} else {
System.out.println("Стоимость не может быть отрицательной!");
}
} catch (NumberFormatException e) {
System.out.println("Ошибка ввода. Введите корректную стоимость товара.");
}
}

calculator.addProduct(productName, productPrice);
}

System.out.println("Добавленные товары:");
for (Map.Entry<String, Double> entry : calculator.getProducts().entrySet()) {
String formattedPrice = Formatter.formatPrice(entry.getValue());
System.out.println(entry.getKey() + ": " + formattedPrice + " " + Formatter.rublesDeclension(entry.getValue()));
}

String formattedTotalCost = Formatter.formatPrice(calculator.calculateTotalCost());
System.out.println("Общая стоимость: " + formattedTotalCost + " " + Formatter.rublesDeclension(calculator.calculateTotalCost()));

String formattedCostPerPerson = Formatter.formatPrice(calculator.calculateCostPerPerson(numberOfPeople));
System.out.println("Каждый человек должен заплатить: " + formattedCostPerPerson + " " + Formatter.rublesDeclension(calculator.calculateCostPerPerson(numberOfPeople)));
}
}
17 changes: 17 additions & 0 deletions src/main/java/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
public class Product {
private String name;
private double price;

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

public String getName() {
return name;
}

public double getPrice() {
return price;
}
}