import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
calc (guestNum(), goodCart());
}
private static void calc(int numOfGuests, ArrayList goodsArrayList) {
System.out.println("СпиÑок ÑоваÑов:");
double sum = 0.0;
for (Goods good : goodsArrayList) {
System.out.println(good.name);
sum += good.price;
}
double eachSum=Math.round(sum*100/numOfGuests);
System.out.printf("ÐÑого каждÑй гоÑÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ заплаÑиÑÑ %.2f %s\n", eachSum/100, rubl(eachSum/100));
}
private static int guestNum() {
System.out.println("Ðа ÑколÑко Ñеловек ÑазделиÑÑ ÑÑеÑ?");
while (true) {
if (scan.hasNextInt()) {
int numOfGuests = scan.nextInt();
if (numOfGuests == 1) {
System.out.println("ÐÐ°Ñ Ð¾ÑвеÑ: \'1\'. ÐÑÑÑÑÑÑвÑÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ Ð´ÐµÐ»Ð¸ÑÑ ÑÑеÑ." +
"\nÐведиÑе коÑÑекÑное колиÑеÑÑво гоÑÑей.");
} else if (numOfGuests < 1) {
System.out.println("ÐÐ°Ñ Ð¾ÑвеÑ: \'" + numOfGuests +
"\'. ÐÑжно Ñелое ÑиÑло > 1. " +
"\nÐведиÑе коÑÑекÑное колиÑеÑÑво гоÑÑей.");
} else {
scan.nextLine();
return numOfGuests;
}
} else {
String str = scan.nextLine().toString();
System.out.println("ÐÐ°Ñ Ð¾ÑвеÑ: \'" + str + "\'. ÐеобÑ
одимо ввеÑÑи Ñелое ÑиÑло > 1." +
"\nÐведиÑе коÑÑекÑное колиÑеÑÑво гоÑÑей.");
}
}
}
private static ArrayList goodCart() {
System.out.println("ÐведиÑе название ÑоваÑа и его ÑÑоимоÑÑÑ Ð² ÑоÑмаÑе: " +
"\'Ðазвание ÑÑбли.копейки\' ÐапÑимеÑ: ÑÑп 6.00. Также можно ввеÑÑи: ÑÑп 6,00");
ArrayList goodsArrayList = new ArrayList<>();
String strGoodInfo;
double sum = 0.0;
while (true) {
strGoodInfo = scan.nextLine().trim();
int lastSpaseIndex = strGoodInfo.lastIndexOf(' ');
if (lastSpaseIndex == -1)//| strGoodInfo.lastIndexOf(' ')>=strGoodInfo.length()-1)
{
System.out.println("Ðе Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑоваÑе.\nÐведиÑе коÑÑекÑнÑе даннÑе");
}
else {
int lastPointIndex = strGoodInfo.replace(',', '.').substring(lastSpaseIndex).indexOf('.');
if (strGoodInfo.replace(',', '.').lastIndexOf('.') < strGoodInfo.length() - 3 & lastPointIndex != -1)
{ System.out.println("ÐÑибка пÑи вводе ÑÑоимоÑÑи.\nÐведиÑе коÑÑекÑнÑе даннÑе");
}
else {
String strPrice = new String(strGoodInfo.substring(strGoodInfo.lastIndexOf(' ')));
try {
double price = Double.parseDouble(strPrice.replace(',', '.').trim());
sum += price;
String name = strGoodInfo.substring(0, strGoodInfo.lastIndexOf(" "));
Goods good = new Goods(name, price);
goodsArrayList.add(good);
System.out.printf("Ð¢Ð¾Ð²Ð°Ñ %s по Ñене %.2f добавлен ÑÑпеÑно!\nÐÑомежÑÑоÑнÑй иÑог: %.2f %s", name, price, sum, rubl(sum));
System.out.println("\nХоÑиÑе ли добавиÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ ÑоваÑ?");
if (scan.nextLine().toString().trim().toLowerCase().equals("завеÑÑиÑÑ")) {
break;
}
} catch (NumberFormatException e) {
System.out.println("ÐÑибка пÑи вводе ÑÑоимоÑÑи ÑоваÑа. ÐведиÑе коÑÑекÑнÑе даннÑе");
}
}
}
}
return goodsArrayList;
}
private static String rubl (double sum)
{
String strSum = sum + "";
int k = strSum.indexOf('.') - 1;
if (k > 0) {
if (strSum.charAt(k - 1) == '1') {
return "ÑÑблей";
}
}
switch (strSum.charAt(k)) {
case '1': return ("ÑÑблÑ");
case '2':
case '3':
case '4': return ("ÑÑблÑ");
default: return ("ÑÑблей");
}
}
}
class Goods {
String name;
double price;
Goods(String name, double price) {
this.name = name;
this.price = price;
}
}
/* ÐÑедполагаÑ, ÑÑо изнаÑалÑÐ½Ð°Ñ Ð·Ð°Ð´Ð°Ñа бÑла пÑоÑе, можно бÑло
даÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÑоваÑов и ÑÐµÐ½Ñ Ð½Ð° ÑазнÑÑ
ÑÑÑокаÑ
(и пÑовеÑÑÑÑ hasNextDouble()
и заÑем ÑÑиÑаÑÑ Ð¼ÐµÑодом nextDouble(). Ðожно бÑло не обÑабаÑÑваÑÑ Ð·Ð°Ð¿ÑÑÑе,
и забÑÑÑе копейки в Ñаблоне "0.00". Ðо мне показалаÑÑ, ÑÑо Ñак задаÑа
пÑиближена инÑеÑенее и пÑиближена к жизни.
*/