import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Guests guests = new Guests();
CalculatorOfGoods calculator = new CalculatorOfGoods();
int numberOfGuests = guests.inputNumberOfGuests();
calculator.inputGoods();
calculator.showGoods();
calculator.showExpensePerGuest(numberOfGuests);
}
}
class Guests {
public int inputNumberOfGuests(){
Scanner scanner = new Scanner(System.in);
System.out.println("ÐведиÑе ÑиÑло гоÑÑей:");
while (true){
if (scanner.hasNextInt()) {
int numberOfGuests = scanner.nextInt();
if (numberOfGuests > 1){
return numberOfGuests;
}
else
showErrorMessage();
}
else {
scanner.nextLine();
showErrorMessage();
}
}
}
private void showErrorMessage(){
System.out.println("ÐекоÑÑекÑное знаÑение! ЧиÑло гоÑÑей должно бÑÑÑ ÑелÑм положиÑелÑнÑм ÑиÑлом болÑÑе 1. \nÐопÑобÑйÑе еÑе Ñаз:");
}
}
class CalculatorOfGoods {
private double sumPrice = 0;
private ArrayList goodsList = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
public void inputGoods(){
String name;
double price;
while(true) {
System.out.println("ÐведиÑе название ÑоваÑа и его ÑÑоимоÑÑÑ:");
name = scanner.next();
price = inputCorrectPriceOfGood(name);
goodsList.add(new Good(name, price));
sumPrice = sumPrice + price;
System.out.println("Ð¢Ð¾Ð²Ð°Ñ " + name + " ÑÑпеÑно добавлен в ÑÑеÑ!");
System.out.println("ÐобавиÑÑ ÐµÑе один ÑоваÑ?");
String answer = scanner.next();
if (answer.equalsIgnoreCase("завеÑÑиÑÑ"))
break;
}
}
private double inputCorrectPriceOfGood(String name){
double price;
while (true) {
if (scanner.hasNextDouble()) {
price = scanner.nextDouble();
scanner.nextLine();
if (price > 0)
return price;
else {
showErrorMessage(name);
}
}
else {
scanner.nextLine();
showErrorMessage(name);
}
}
}
private void showErrorMessage(String name){
System.out.println("ÐекоÑÑекÑное знаÑение ÑÑоимоÑÑи! СÑоимоÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÐ¿Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑм ÑиÑлом в ÑоÑмаÑе ÑÑбли.копейки \nÐопÑобÑйÑе еÑе Ñаз:");
System.out.print(name + " ------ ");
}
public void showGoods() {
System.out.println("\nÐобавленнÑе ÑоваÑÑ:");
for (Good good : goodsList) {
System.out.println(good.name);
}
}
public void showExpensePerGuest(int numberOfGuests){
double expensePerGuest = sumPrice/numberOfGuests;
FormatterOfNumber formatterOfNumber = new FormatterOfNumber();
String formattedString = formatterOfNumber.formatDoubleToString(expensePerGuest);
System.out.println(String.format("\nÐаждÑй гоÑÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ заплаÑиÑÑ: %.2f %s",expensePerGuest, formattedString));
}
}
class Good {
String name;
double price;
public Good(String name, double price) {
this.name = name;
this.price = price;
}
}
class FormatterOfNumber {
String formatDoubleToString(double value) {
String formattedString = "";
int intPart = (int) Math.floor(value);
int valueToFormat = intPart % 100;
if (valueToFormat >= 10 && valueToFormat <= 20)
formattedString = "ÑÑблей";
else {
valueToFormat = intPart % 10;
switch (valueToFormat) {
case 1:
formattedString = "ÑÑблÑ";
break;
case 2, 3, 4:
formattedString = "ÑÑблÑ";
break;
case 0, 5, 6, 7, 8, 9:
formattedString = "ÑÑблей";
break;
}
}
return formattedString;
}
}