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
12 changes: 12 additions & 0 deletions src/main/java/BillCalculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
public class BillCalculator {
Format format = new Format();

public void calculate() {
double sum = 0.0;
for (String next : Main.itemList.keySet()) {
sum = sum + Main.itemList.get(next);
}
System.out.printf("Общая сумма всех товаров " + format.fix(sum, "Рубль", "Рубля", "Рублей") + " .\n\nВсего людей участвует : " + Main.peopleAvailable + "\nКаждый человек должен заплатить " + format.fix(sum / Main.peopleAvailable, "Рубль", "Рубля", "Рублей"));
}
}

18 changes: 18 additions & 0 deletions src/main/java/Format.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import static java.lang.Math.abs;

public class Format {
public static String fix(double number, String caseOne, String caseTwo, String caseFive) {
String str = String.format("%.2f ", number);
number = abs(number);

if (number % 10 == 1 && number % 100 != 11) {
str += caseOne;
} else if (number % 10 >= 2 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {
str += caseTwo;
} else {
str += caseFive;
}
return str;
}
}

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

public class Item {
Scanner sc = new Scanner(System.in);
Format format = new Format();
String itemName = "";
Double itemCost;

public void addItem() {
System.out.println("Пожалуйста, введите название товара :");
itemName = sc.next();
while (true) {
System.out.println("Введите стоимость данного товара в формате 'Рубли,Копейки' :");
sc = new Scanner(System.in);
if (sc.hasNextDouble()) {
itemCost = sc.nextDouble();
if (itemCost > 0) {
Main.itemList.put(itemName, itemCost);
System.out.println("Товар \"" + itemName + "\" стоимостью " + format.fix(itemCost, "Рубль", "Рубля", "Рублей") + " успешно дабавлен! \n");
break;
} else {
System.out.println("Товар не может иметь отрицательную стоимость или стоить 0!");
}
} else {
System.out.println("Неправильный формат ввода! Повторите попытку.");
}
}
}

public void addAnotherItem(String next) {
itemName = next;
while (true) {
System.out.println("Введите стоимость данного товара в формате 'Рубли,Копейки' :");
sc = new Scanner(System.in);
if (sc.hasNextDouble()) {
itemCost = sc.nextDouble();
if (itemCost > 0) {
Main.itemList.put(itemName, itemCost);
System.out.println("Товар \"" + itemName + "\" стоимостью " + format.fix(itemCost, "Рубль", "Рубля", "Рублей") + " успешно дабавлен! \n");
break;
} else {
System.out.println("Товар не может иметь отрицательную стоимость или стоить 0!");
}
} else {
System.out.println("Неправильный формат ввода! Повторите попытку.");
}
}
}

public void showItemsAdded() {
int index = 0;
System.out.println("Добавленные товары: \n");
for (String next : Main.itemList.keySet()) {
double nextValue = Main.itemList.get(next);
index = index + 1;
System.out.println(index + ". " + next + " стоимостью " + format.fix(nextValue, "Рубль", "Рубля", "Рублей") + ".\n");
}
}
}
46 changes: 44 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,48 @@
import java.util.HashMap;
import java.util.Scanner;

public class Main {
static int peopleAvailable;
static Scanner sc = new Scanner(System.in);
static HashMap<String, Double> itemList = new HashMap<>();
static Item item = new Item();
static BillCalculator billCalculator = new BillCalculator();

public static void main(String[] args) {
System.out.println("Hello world!");
start();
item.addItem();
nextItemAndBreak();
}

public static void start() {
System.out.println("Добро пожаловать в Калькулятор счёта v1.0 \nНа сколько человек необходимо разделить счёт?");
while (true) {
sc = new Scanner(System.in);
if (sc.hasNextInt()) {
peopleAvailable = sc.nextInt();
if (peopleAvailable > 1) {
break;
} else {
System.out.println("Недостаточно людей для разделения счёта, пожалуйста повторите попытку.");
}
} else {
System.out.println("Неправильный формат ввода! Повторите попытку.");
}
}
}

public static void nextItemAndBreak() {
while (true) {
System.out.println("Хотите добавить ещё один товар? \nВведите название товара или введите \"Завершить\"- чтобы посчитать результат.");
String moreItems = sc.next();
if (moreItems.equalsIgnoreCase("Завершить")) {
item.showItemsAdded();
billCalculator.calculate();
System.out.println("\nСпасибо что воспользовались этой программой!\nЗавершение работы...");
break;
} else {
item.addAnotherItem(moreItems);
}
}
}
}
}