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

public class BillCalculator {
private HashMap<String, Double> products = new HashMap<>();
private int numberOfPeople;

public BillCalculator(double totalBill, int numberOfPeople) {
this.numberOfPeople = numberOfPeople;
}

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

public double getTotalBill() {
double totalBill = 0.0;
for (double price : products.values()) {
totalBill += price;
}
return totalBill;
}

public double calculatePerPersonBill() {
double totalBill = getTotalBill();
return totalBill / numberOfPeople;
}
public String getProductsList() {
StringBuilder productList = new StringBuilder("Добавленные продукты:\n");
for (Map.Entry<String, Double> entry : products.entrySet()) {
String productName = entry.getKey();
double price = entry.getValue();
productList.append(productName).append(": ").append(price).append("\n");
}
return productList.toString();
}

}
34 changes: 34 additions & 0 deletions src/main/java/Formatter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
public class Formatter {
public static String formatAmount(double amount) {
int formattedAmount = (int) Math.floor(amount);

if (formattedAmount % 100 >= 11 && formattedAmount % 100 <= 19) {
return "рублей";
} else {
switch (formattedAmount % 10) {
case 1:
return "рубль";
case 2:
return "рубля";
case 3:
return "рубля";
case 4:
return "рубля";
case 5:
return "рублей";
case 6:
return "рублей";
case 7:
return "рублей";
case 8:
return "рублей";
case 9:
return "рублей";
case 0:
return "рублей";
default:
return "рублей";
}
}
}
}
65 changes: 63 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,67 @@
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Scanner scanner = new Scanner(System.in);
BillCalculator billCalculator = null;
Formatter formatter = new Formatter();
int numberOfPeople = 0;
while (true) {
System.out.print("На сколько человек необходимо разделить счёт: ");
if (scanner.hasNextInt()) {
numberOfPeople = scanner.nextInt();
if (numberOfPeople <= 1) {
System.out.println("Ошибка: Количество человек должно быть больше 1.");
} else {
break;
}
} else {
System.out.println("Ошибка: неправильный формат ввода, введите число.");
scanner.next();
}
}
boolean firstProductAdded = false;
while (true) {
System.out.print("Введите название продукта или напишите [Завершить]: ");
String productName = scanner.next();
if (productName.equalsIgnoreCase("Завершить")) {
break;
}

System.out.print("Введите стоимость продукта в формате \"рубли,копейки\": ");
double price = 0.00;
while (true) {
if (scanner.hasNextDouble()) {
price = scanner.nextDouble();
scanner.nextLine();
if (price < 0) {
System.out.println("Ошибка: Стоимость товара не может быть отрицательной.");
} else {
break;
}
} else {
System.out.println("Ошибка: Введите число в формате \"рубли,копейки\".");
scanner.next();

}
}
if (billCalculator == null) {
billCalculator = new BillCalculator(price, numberOfPeople);
billCalculator.addProduct(productName, price);
} else {
billCalculator.addProduct(productName, price);
}
System.out.println("Продукт добавлен успешно.");
}

if (billCalculator != null) {
System.out.println(billCalculator.getProductsList());
System.out.println("Общий счёт: " + String.format("%.2f", billCalculator.getTotalBill()));
System.out.println("Каждый человек должен заплатить: " + String.format("%.2f", billCalculator.calculatePerPersonBill()) + " " + formatter.formatAmount(billCalculator.calculatePerPersonBill()));
} else {
System.out.println("Не были добавлены продукты. Программа завершена.");
}

scanner.close();
}
}
}