import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Scanner;
public class Counter {
private final int countPerson;
private final HashMap goods = new HashMap<>();
Counter(int countPerson) {
this.countPerson = countPerson;
}
public void askUser() {
Scanner sc = new Scanner(System.in);
System.out.println("ÐведиÑе ÑоваÑ");
// ÐолÑÑение ÑоваÑа
String product = sc.next();
if (endSession(product)) {
System.out.println("СеÑÑÐ¸Ñ Ð·Ð°ÐºÐ¾Ð½Ñена. СпаÑибо!");
return;
}
System.out.println("ÐведиÑе ÑÑоимоÑÑÑ");
// СÑоимоÑÑÑ
String cost = addCost(sc);
if (endSession(cost)) {
System.out.println("СеÑÑÐ¸Ñ Ð·Ð°ÐºÐ¾Ð½Ñена. СпаÑибо!");
return;
}
// добавлÑем пÑодÑкÑ
goods.put(product, Double.parseDouble(cost));
System.out.println("Ðобавлено ÑÑпеÑно!");
// Снова ÑпÑаÑиваем пÑо ÑÐ¾Ð²Ð°Ñ (РекÑÑÑиÑ)
askUser();
}
private String addCost(Scanner sc) {
String cost = sc.next();
if (!cost.matches("\\d+.\\d{2}")) {
System.out.println("ÐнаÑение не ÑооÑвеÑÑвÑÐµÑ Ð¼Ð°Ñке XX.XX ÐведиÑе ÑÑоимоÑÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾");
// (РекÑÑÑиÑ)
cost = addCost(sc);
}
return cost;
}
private boolean endSession(String str) {
if (str.equalsIgnoreCase("ÐÐÐÐРШÐТЬ")) {
DecimalFormat decimalFormat = new DecimalFormat("#.##");
// вÑвеÑÑи ÑезÑлÑÑаÑÑ
System.out.println("ÐобавленнÑе ÑоваÑÑ:");
goods.forEach((key, value) ->
System.out.println("*** " + key + " | СÑоимоÑÑÑ " + value + " " + GetRubleAddition(value)));
double total = goods.values().stream().mapToDouble(Double::doubleValue).sum();
System.out.println("ÐÑего поÑÑаÑено: " + decimalFormat.format(total) + " " + GetRubleAddition(total));
double fromOnePerson = total / countPerson;
System.out.println("С Ñеловека - " + decimalFormat.format(fromOnePerson) +
" " + GetRubleAddition(fromOnePerson));
return true;
}
return false;
}
private String GetRubleAddition(Double value) {
int num = value.intValue();
int preLastDigit = num % 100 / 10;
if (preLastDigit == 1) {
return "ÑÑблей";
}
switch (num % 10) {
case 1:
return "ÑÑблÑ";
case 2:
case 3:
case 4:
return "ÑÑблÑ";
default:
return "ÑÑблей";
}
}
}