import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import java.util.InputMismatchException;
public class Main {
public static void main(String[] args) {
calcBill();
}
/*
меÑод calcBill() запÑаÑÐ¸Ð²Ð°ÐµÑ ÐºÐ¾Ð»-во Ñеловек, Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÑоваÑов и иÑ
ÑÑоимоÑÑÑ,
пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ Ð¿Ñи введении некоÑÑекÑнÑÑ
ÑиÑел,
подÑÑиÑÑÐ²Ð°ÐµÑ ÑÑÐ¼Ð¼Ñ Ñен ÑоваÑов, Ð´ÐµÐ»Ð¸Ñ Ð½Ð° колиÑеÑÑво Ñеловек
*/
public static void calcBill() {
System.out.println("Ðа какое колиÑеÑÑво Ñеловек необÑ
одимо ÑазделиÑÑ ÑÑÑÑ?");
int amountPerson = getAmountPerson();
List products = new ArrayList<>(); // Ñоздаем динамиÑеÑкий маÑÑив обÑекÑов, где бÑдÑÑ Ñ
ÑаниÑÑÑ ÑоваÑÑ Ð¸ ÑÐµÐ½Ñ Ð½Ð° ниÑ
String productName;
double productPrise = 0.00;
double sum = 0.00; // пеÑеменнаÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ñ
ÑаниÑÑ ÑÑÐ¼Ð¼Ñ Ñен ÑоваÑов
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.println("ÐведиÑе название ÑоваÑа. ÐÐ»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñе \"завеÑÑиÑÑ\".");
productName = scanner.nextLine();
if (productName.equalsIgnoreCase("ÐавеÑÑиÑÑ")) {
break;
}
System.out.println("ÐведиÑе ÑÐµÐ½Ñ ÑоваÑа");
while (true) {
try {
Scanner scan = new Scanner(System.in);
productPrise = scan.nextDouble();
while (productPrise <= 0) {
System.out.println("Ðведено некоÑÑекÑное знаÑение. ÐведиÑе ÑиÑло > 0.");
productPrise = scan.nextDouble();
}
break;
} catch (InputMismatchException e) {
System.out.println("Ðведено некоÑÑекÑное знаÑение. ÐведиÑе ÑиÑло > 0.");
}
}
sum += productPrise;
Product prod = new Product(productName, productPrise); // Ñоздаем обÑÐµÐºÑ prod, ÑкземплÑÑ ÐºÐ»Ð°ÑÑа Product
products.add(prod); // добавлÑем обÑекÑÑ Ð² динамиÑеÑкий маÑÑив
}
products.forEach(dish -> { // пооÑеÑедно извлекаем обÑекÑÑ Ð¸Ð· маÑÑива
System.out.println(String.format("ТоваÑ: %s. Цена: %.2f", dish.name, dish.prise) + " " + getAddition(dish.prise));
});
double everyoneHasToPay = sum / amountPerson;
System.out.println(String.format("ÐаждÑй из %d Ñеловек должен заплаÑиÑÑ: %.2f", amountPerson, everyoneHasToPay) + " " + getAddition(everyoneHasToPay));
}
/*
меÑод getAmountPerson() возвÑаÑÐ°ÐµÑ ÑелоÑиÑленнÑÑ Ð¿ÐµÑеменнÑÑ amountPerson - кол-во Ñеловек,
на коÑоÑое необÑ
одимо поделиÑÑ ÑÑÑÑ. ÐÑовеÑÑеÑ, ÑÑÐ¾Ð±Ñ ÑиÑло бÑло > 0. ÐÑÐ»Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸ÑлÑÑение
InputMismatchException (неÑиÑловой ввод в конÑолÑ).
*/
public static int getAmountPerson() {
while (true) {
try {
Scanner scanner = new Scanner(System.in);
int amountPerson = scanner.nextInt();
scanner.nextLine();
while (amountPerson <= 1) {
System.out.println("Ðведено некоÑÑекÑное знаÑение. ÐведиÑе Ñелое ÑиÑло > 0.");
amountPerson = scanner.nextInt();
}
return amountPerson;
} catch (InputMismatchException e) {
System.out.println("Ðведено некоÑÑекÑное знаÑение. ÐведиÑе Ñелое ÑиÑло > 0.");
}
}
}
/*
меÑод getAddition(double everyoneHasToPay) возвÑаÑÐ°ÐµÑ ÑÑÑоковÑÑ Ð¿ÐµÑеменнÑÑ "ÑÑблÑ" в пÑавилÑном падеже
пеÑедаем в меÑод пеÑеменнÑÑ everyoneHasToPay - ÑколÑко должен оплаÑиÑÑ ÐºÐ°Ð¶Ð´Ñй
опÑеделÑем ÑелоÑиÑленнÑй оÑÑаÑок Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½Ð° 10 и подбиÑаем пÑавилÑнÑй падеж
*/
public static String getAddition(double everyoneHasToPay) {
int INTeveryoneHasToPay = (int) everyoneHasToPay;
int preLastDigit = INTeveryoneHasToPay % 100 / 10;
if (preLastDigit == 1)
{
return "ÑÑблей";
}
switch (INTeveryoneHasToPay % 10)
{
case 1:
return "ÑÑблÑ";
case 2:
case 3:
case 4:
return "ÑÑблÑ";
default:
return "ÑÑблей";
}
}
}
class Product {
String name;
double prise;
Product(String name, double prise) {
this.name = name;
this.prise = prise;
}
}