import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
public class BillCalc {
private final List items;
private BigDecimal totalCost;
private BigDecimal totalCostPerPerson;
private final BigDecimal persons;
public BillCalc(int persons) {
this.items = new ArrayList<>();
this.totalCost = BigDecimal.valueOf(0.00);
this.totalCostPerPerson = BigDecimal.valueOf(0.00);
this.persons = BigDecimal.valueOf(persons);
}
public void addItem(String itemName, String price) {
BigDecimal itemPrice = new BigDecimal(price.trim()).setScale(2, RoundingMode.HALF_UP);
String item = itemName + ", " + itemPrice;
items.add(item);
totalCost = totalCost.add(itemPrice);
totalCostPerPerson = totalCost.divide(persons, RoundingMode.HALF_UP);
}
public void printTotal() {
System.out.println("ÐолиÑеÑÑво поÑеÑиÑелей: " + persons.setScale(0, RoundingMode.DOWN));
System.out.println("ÐбÑÐ°Ñ ÑÑмма ÑÑеÑа: " + totalEnding(totalCost));
System.out.println("ÐаждÑй поÑеÑиÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ заплаÑиÑÑ: " + totalEnding(totalCostPerPerson));
System.out.println("\nÐÑе позиÑии менÑ: ");
for (int i = 0; i < items.size(); i++) {
String name = items.get(i).split(",")[0];
BigDecimal price = new BigDecimal(items.get(i).split(", ")[1]);
System.out.println((i+1) + ". " + name + " - " + totalEnding(price));
}
}
private String totalEnding(BigDecimal val) {
double rub = val.setScale(0, RoundingMode.DOWN).doubleValue();
double kop = val.multiply(BigDecimal.valueOf(100)).setScale(0, RoundingMode.DOWN).doubleValue() % 100;
String endRub;
if (rub % 100 > 10 && rub % 100 < 15) endRub = "ÑÑблей";
else if (rub % 10 > 1 && rub % 10 < 5) endRub = "ÑÑблÑ";
else if (rub % 10 == 1) endRub = "ÑÑблÑ";
else endRub = "ÑÑблей";
String endKop;
if (kop > 10 && kop < 15) endKop = "копеек";
else if (kop % 10 > 1 && kop % 10 < 5) endKop = "копейки";
else if (kop % 10 == 1) endKop = "копейка";
else endKop = "копеек";
return String.format("%.0f %s %.0f %s", rub, endRub, kop, endKop);
}
}