import java.util.Locale;
import java.util.Scanner;
import java.util.HashMap;
import java.util.Iterator;
import static java.lang.Math.floor;
public class Calculator {
HashMap itemsInInvoice = new HashMap<>();
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
String item;
Double cost;
Double amount = (double) 0;
boolean stopProgram = false;
void calculate (int peoplesInInvoice) {
while (true) {
System.out.println("ÐведиÑе название ÑоваÑа");
item = scanner.nextLine();
if (item.equalsIgnoreCase("ÐавеÑÑиÑÑ")) {
break;
}
System.out.println("ÐведиÑе ÑÑоимоÑÑÑ ÑоваÑа в ÑоÑмаÑе ÑÑбли.копейки");
while(!scanner.hasNextDouble()) {
if (scanner.nextLine().equalsIgnoreCase("ÐавеÑÑиÑÑ")) {
stopProgram = true;
break;
}
System.out.println("ÐведиÑе ÑиÑло болÑÑе нÑлÑ");
}
while (!stopProgram && scanner.hasNextDouble()) {
if ((cost = scanner.nextDouble()) > 0) {
scanner.nextLine();
break;
}
System.out.println("ÐведиÑе ÑиÑло болÑÑе нÑлÑ");
}
if (stopProgram) {
break;
}
if (!itemsInInvoice.containsKey(item)) {
itemsInInvoice.put(item, cost);
System.out.println("Ð¢Ð¾Ð²Ð°Ñ " + item + " ÑÑоимоÑÑÑÑ " + costToWord(cost) + " ÑÑпеÑно добавлен\n");
}
else {
System.out.println("Ð¢Ð¾Ð²Ð°Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ " + item + " Ñже еÑÑÑ Ð² ÑпиÑке. ÐобавиÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½? (Y/N), (Ð/Ð)");
while (true) {
String addItem = scanner.nextLine();
if (addItem.equalsIgnoreCase("Y") || (addItem.equalsIgnoreCase("Ð"))) {
int i = 1;
while (true) {
String dublicateItem = item + " (" + i + ")";
if (!itemsInInvoice.containsKey(dublicateItem)) {
item = dublicateItem;
itemsInInvoice.put(item, cost);
System.out.println("Ð¢Ð¾Ð²Ð°Ñ " + item + " ÑÑоимоÑÑÑÑ " + costToWord(cost) + " ÑÑпеÑно добавлен\n");
break;
}
i++;
}
break;
}
else if (addItem.equalsIgnoreCase("N") || (addItem.equalsIgnoreCase("Ð"))) {
break;
}
System.out.println("ÐведиÑе 'Y' ('Ð'), еÑли Ñ
оÑиÑе добавиÑÑ ÑоваÑ. ÐведиÑе 'N' ('Ð'), еÑли не Ñ
оÑиÑе");
}
}
}
Iterator itemIterator = itemsInInvoice.keySet().iterator();
if (!itemIterator.hasNext()) {
System.out.println("СпиÑок ÑоваÑов пÑÑÑ");
}
while (itemIterator.hasNext()) { // до ÑеÑ
поÑ, пока еÑÑÑ Ð½ÐµÐ¿ÑойденнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÑпиÑке
String element = itemIterator.next(); // полÑÑаем ÑледÑÑÑий ÑлеменÑ
System.out.println(element + ": " + costToWord(itemsInInvoice.get(element)));
amount += itemsInInvoice.get(element);
}
System.out.println("ÐÑого: по " + costToWord(amount/peoplesInInvoice) + " Ñ Ñеловека");
}
int roundDown (Double cost) {
return (int) floor(cost);
}
String costToWord (Double cost) {
if (roundDown(cost)%10 >= 5 || roundDown(cost)%10 == 0 ) {
return String.format("%.2f", cost) + " ÑÑблей";
}
else if (roundDown(cost)%10 == 1) {
return String.format("%.2f", cost) + " ÑÑблÑ";
}
else {
return String.format("%.2f", cost) + " ÑÑблÑ";
}
}
}