import java.util.ArrayList;
import java.lang.Math;
import java.util.Scanner;
public class Main {
static class Item {
String name;
double price;
Item (String name, double price){
this.name = name;
this.price = price;
}
}
static class Check {
Scanner scanner = new Scanner(System.in);
int numberOfPersons = 0;
double total = 0;
ArrayList- itemList = new ArrayList<>();
void printFrame(){
System.out.println("********************************************");
System.out.println("* ÐалÑкÑлÑÑÐ¾Ñ ÑÑÑÑа *");
System.out.println("********************************************");
}
void setNumberOfPersons(){
while (true) {
System.out.println("* Ðа ÑколÑко Ñеловек ÑазделиÑÑ ÑÑÑÑ?");
System.out.print("* ");
if (scanner.hasNextInt()) {
numberOfPersons = scanner.nextInt();
if (numberOfPersons > 1) {
break;
}
}
else {
scanner.next();
}
System.out.print("* ");
System.out.println("* ÐÑибка ввода! ÐведиÑе Ñелое ÑиÑло болÑÑе 1");
System.out.print("* ");
}
}
void fillIn(){
int position = 1;
String positionName; // = "";
double positionPrice; // = 0;
while (true){
System.out.println("********************************************");
System.out.println("* ÐведиÑе название ÑоваÑа " + position + " позиÑии ÑÑÑÑа:");
System.out.print("* ");
positionName = scanner.next();
while (true){
System.out.println("* ÐведиÑе ÑÑоимоÑÑÑ ÑоваÑа '" + positionName + "': ");
System.out.print("* ");
if (scanner.hasNextDouble()){
positionPrice = scanner.nextDouble();
if (positionPrice >= 0){
break;
}
}
else {
scanner.next();
}
System.out.println("*");
System.out.println("* ÐÑибка ввода! ÐведиÑе неоÑÑиÑаÑелÑнÑÑ ÑÑÐ¼Ð¼Ñ ÑоваÑа");
System.out.println("* в ÑоÑмаÑе: [ÑÑбли],[копейки]");
System.out.println("*");
}
Item item = new Item(positionName, positionPrice);
this.itemList.add(item);
this.total += positionPrice;
position++;
System.out.println("* Ð¢Ð¾Ð²Ð°Ñ '" + positionName + "' ÑÑпеÑно добавлен.");
System.out.println("* ÐÑ Ñ
оÑиÑе добавиÑÑ ÐµÑе один ÑоваÑ?");
System.out.println("* ÐведиÑе лÑбой Ñимвол ÑÑÐ¾Ð±Ñ Ð¿ÑодолжиÑÑ Ð²Ð²Ð¾Ð´ ÑоваÑов или 'ÐавеÑÑиÑÑ' Ð´Ð»Ñ ÑаÑÑÑÑа ÑÑммÑ");
System.out.print("* ");
if (scanner.next().equalsIgnoreCase("ÐавеÑÑиÑÑ")){
break;
}
}
}
double calculate(){
if (numberOfPersons > 1) {
return (this.total / numberOfPersons);
}
else return -1;
}
void printResult(){
System.out.println();
System.out.println("********************************************");
System.out.println("* ÐобавленнÑе ÑоваÑÑ: *");
System.out.println("********************************************");
Formatter formatter = new Formatter();
for (Item item : itemList){
System.out.print("* - " + item.name);
System.out.println(" по Ñене " + formatter.format(item.price));
}
System.out.println("********************************************");
System.out.println("* ÐбÑÐ°Ñ ÑÑмма ÑÑÑÑа: *");
System.out.println("* " + formatter.format(this.total));
System.out.println("********************************************");
System.out.println("* ÐаждÑй из " + this.numberOfPersons + " Ñеловек должен заплаÑиÑÑ:");
System.out.println("* " + formatter.format(this.calculate()));
System.out.println("********************************************");
System.out.println("* ÐÑогÑамма завеÑÑена. *");
}
}
static class Formatter {
String format(double rub){
String s = Double.toString(Math.floor(rub));
boolean numberteen = ((s.length() > 3) && (s.charAt(s.length()-4) == '1')); //11, 12, 13, 14, 111, 112, ...
if (s.length() > 2){
switch (s.charAt(s.length()-3)){
case '0':
case '5':
case '6':
case '7':
case '8':
case '9':
return (String.format("%.2f ÑÑблей", rub));
case '1':
if (numberteen){
return (String.format("%.2f ÑÑблей", rub));
}
else {
return (String.format("%.2f ÑÑблÑ", rub));
}
case '2':
case '3':
case '4':
if (numberteen){
return (String.format("%.2f ÑÑблей", rub));
}
else {
return (String.format("%.2f ÑÑблÑ", rub));
}
}
}
return ("ÐÑибка вÑвода");
}
}
public static void main(String[] args) {
Check check = new Check();
check.printFrame();
check.setNumberOfPersons();
check.fillIn();
check.printResult();
}
}