import java.util.ArrayList;
import java.util.Scanner;
import java.util.Locale;
public class Calc {
Scanner scanner = new Scanner(System.in);
ArrayList- items = new ArrayList<>(); // ÑпиÑок ÑоваÑов
int countPeople; // колиÑеÑÑво Ñеловек
int rubleFormat; // ÑоÑÐ¼Ð°Ñ Ñлова "ÑÑблÑ"
double totalPrice = 0; // ÑÑоимоÑÑÑ Ð²ÑеÑ
ÑоваÑов (изнаÑалÑно 0)
double fromEach; // каждÑй должен заплаÑиÑÑ
public void countPeople() { // Ñзнаем колиÑеÑÑво Ñеловек
System.out.println("ÐÑивеÑ! Ðа ÑколÑко Ñеловек делим ÑÑÐµÑ (введиÑе ÑиÑло)?:");
do {
while (!scanner.hasNextInt()) { // полÑзоваÑÐµÐ»Ñ Ð²Ð²ÐµÐ» не ÑиÑло
System.out.println("ÐÑибка! ÐведиÑе ÑиÑло:");
scanner.next();
} countPeople = scanner.nextInt();
if (countPeople <= 1) { // полÑзоваÑÐµÐ»Ñ Ð²Ð²ÐµÐ» ÑиÑло менÑÑе нÑлÑ, ÑообÑаем об оÑибке и наÑинаем Ñнова
System.out.println("Ðолжно бÑÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ñм 2 Ñеловека Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑазделиÑÑ ÑÑеÑ. ÐовÑоÑиÑе попÑÑкÑ:");
}
} while (countPeople <= 1);
}
public void itemAdd(String name, double price) { // добавлÑем ÑÐ¾Ð²Ð°Ñ Ð² ÑпиÑок
Item newItem = new Item();
newItem.name = name;
newItem.price = price;
items.add(newItem);
}
public void itemAddOut() { // внеÑний меÑод Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑоваÑа
scanner.useLocale(Locale.ENGLISH);
System.out.println("ÐведиÑе название ÑоваÑа:");
String name = scanner.next();
double price;
System.out.print("ÐведиÑе ÑÐµÐ½Ñ ÑоваÑа (в ÑоÑноÑÑи до копеек. ÐÑполÑзÑйÑе ÑоÑÐºÑ Ð² каÑеÑÑве ÑазделениÑ):\n");
do { // полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ Ñ
оÑÑ-Ð±Ñ Ð¾Ð´Ð¸Ð½ ÑоваÑ
while (!scanner.hasNextDouble()) { // полÑзоваÑÐµÐ»Ñ Ð²Ð²ÐµÐ» не ÑиÑло, Ñогда
System.out.println("ÐÑибка! ÐведиÑе ÑиÑло:");
scanner.next();
}
price = scanner.nextDouble(); // еÑли ввел ÑиÑло, пÑиÑвоем его пеÑеменной price
if (price <= 0) { // еÑли ÑиÑло менÑÑе нÑлÑ, вÑводим оÑÐ¸Ð±ÐºÑ Ð¸ пеÑеÑ
одим на while ()
System.out.println("ЧиÑло должно бÑÑÑ Ð±Ð¾Ð»ÑÑе нÑлÑ. ÐопÑобÑйÑе Ñнова:");
}
} while (price <= 0); // в ÑлÑÑае оÑибки наÑинаем Ñикл ÑнаÑало
itemAdd(name, price);
System.out.println("ÐÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð»Ð¸ ÑÐ¾Ð²Ð°Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ " + name + " и Ñеной " + price);
}
public boolean agreeUser() { // меÑод на ÑоглаÑие пÑодолжиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÑоваÑÑ
System.out.println("ÐÑодолжиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ ÑоваÑов (введиÑе ÐÑодолжиÑÑ/ÐавеÑÑиÑÑ)?:");
String agreeUser = scanner.next().toLowerCase();
boolean agree = true;
boolean invalidAgree;
if (agreeUser.equals("завеÑÑиÑÑ")) {
agree = false;
} else if (agreeUser.equals("пÑодолжиÑÑ")) {
agree = true;
} else {
invalidAgree = true;
while (invalidAgree) {
System.out.println("ÐожалÑйÑÑа, вÑбеÑиÑе ÐÐÐУ из ÐÐСТУÐÐЫХ команд: введиÑе ÐÑодолжиÑÑ/ÐавеÑÑиÑÑ:");
agreeUser = scanner.next().toLowerCase();
if (agreeUser.equals("завеÑÑиÑÑ")) {
agree = false;
invalidAgree = false;
} else if (agreeUser.equals("пÑодолжиÑÑ")) {
agree = true;
invalidAgree = false;
}
}
} return agree;
}
public void total() { // ÑÑиÑаем Ñек Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾
System.out.println("ÐобавленнÑе ÑоваÑÑ: ");
for (Item item : items) {
System.out.println("Ð¢Ð¾Ð²Ð°Ñ '" + item.name + "' за " + item.price + " " + rubleFormat(item.price));
}
for (Item item : items) {
totalPrice = totalPrice + item.price;
}
fromEach = (totalPrice / countPeople);
System.out.println(String.format("ÐÑого, каждÑй должен заплаÑиÑÑ: %.2f ", fromEach) + rubleFormat(fromEach));
}
public String rubleFormat(double price) { // опÑеделÑем ÑоÑÐ¼Ð°Ñ Ñлова "ÑÑблÑ"
int price2 = (int) price;
rubleFormat = price2 % 10;
if (rubleFormat == 1) {
return "ÑÑблÑ";
} else if (rubleFormat == 2 || rubleFormat == 3 || rubleFormat == 4) {
return "ÑÑблÑ";
} else {
return "ÑÑблей";
}
}
public void itemAddMain() { // оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð»Ð¾Ð³Ð¸ÐºÐ° калÑкÑлÑÑоÑа
boolean processAdd = true;
countPeople(); // Ñзнаем колиÑеÑÑво Ñеловек
boolean agree = true; // полÑзоваÑÐµÐ»Ñ Ñ
оÑÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ ÑоваÑ
while (agree) {
itemAddOut(); // пÑоÑеÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑоваÑа
agree = agreeUser();// Ñзнаем, Ñ
оÑÐµÑ Ð»Ð¸ пÑодолжиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ
} if (!agree) {
total(); // еÑли не Ñ
оÑеÑ, вÑводим ÑезÑлÑÑаÑ
}
}
}