//Calculator опиÑÑÐ²Ð°ÐµÑ Ð¾Ð±ÑÐµÐºÑ ÐºÐ°Ð»ÑкÑлÑÑоÑа, коÑоÑÑй запÑаÑÐ¸Ð²Ð°ÐµÑ Ð¸ ÑоÑ
ÑанÑÐµÑ Ð¾Ð±ÑекÑÑ Product
//Ð¾Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸ вÑÐ²Ð¾Ð´Ð¸Ñ ÑпиÑок и ÑÑÐ¼Ð¼Ñ ÑоваÑов
import java.util.ArrayList;
import java.util.Scanner;
public class Calculator {
private final int numberOfFriends; //колиÑеÑÑво дÑÑзей, на коÑоÑÑÑ
делим ÑÑеÑ
private final Scanner scanner; //обÑÐµÐºÑ Scanner иниÑиализиÑÑеÑÑÑ Ð² конÑÑÑÑкÑоÑе, ÑÑÐ¾Ð±Ñ Ð½Ðµ плодиÑÑ Ð»Ð¸Ñние обÑекÑÑ Ð² памÑÑи.
private final ArrayList products = new ArrayList<>();
Calculator(int count, Scanner scanner) {
this.numberOfFriends = count; //полÑÑаем колиÑеÑÑво дÑÑзей
this.scanner = scanner; //полÑÑаем ÑÑÑÐ»ÐºÑ Ð½Ð° Ñже ÑÑÑеÑÑвÑÑÑий обÑÐµÐºÑ Scanner
}
public void start() { //оÑновной меÑод клаÑÑа, ÑобиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе и вÑÐ²Ð¾Ð´Ð¸Ñ ÑезÑлÑÑаÑ
String name; //название ÑоваÑа
double price; //Ñена ÑоваÑа
do {
name = enterProductName(scanner);
price = enterProductPrice(scanner);
addNewProduct(products, name,price);
System.out.println("ХоÑиÑе добавиÑÑ ÐµÑе один ÑоваÑ?");
} while (!scanner.next().trim().equalsIgnoreCase("завеÑÑиÑÑ"));
//вÑводим иÑоги вÑей ÑабоÑÑ ÐºÐ°Ð»ÑкÑлÑÑоÑа, if добавил ÑкоÑее Ð´Ð»Ñ Ð¿Ð¾ÑÑдка, Ñак как к ÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð¼ÐµÐ½ÑÑ Ð½Ðµ Ð²Ð¸Ð¶Ñ Ð²Ð°ÑианÑа, ÑÑо коллекÑÐ¸Ñ Ð¿ÑÑÑа
showResult(products);
}
private String enterProductName(Scanner scanner){
scanner.nextLine(); //добавлено Ð´Ð»Ñ Ð¾Ð±Ð½ÑÐ»ÐµÐ½Ð¸Ñ ÑканеÑа, еÑли пÑедÑдÑÑий ввод бÑл Ñ Ð¾Ñибкой
System.out.println("ÐведиÑе название ÑоваÑа:");
return scanner.next(); //ввод ÑÑÑоки не ÑÑебÑÐµÑ Ð¿ÑовеÑки (ÑеоÑеÑиÑеÑки можно замоÑоÑиÑÑÑÑ, но вÑÑ
Ð¾Ð´Ð¸Ñ Ð·Ð° Ñамки ТÐ)
}
private double enterProductPrice(Scanner scanner){
double price;
while (true) {
scanner.nextLine(); //добавлено Ð´Ð»Ñ Ð¾Ð±Ð½ÑÐ»ÐµÐ½Ð¸Ñ ÑканеÑа, еÑли пÑедÑдÑÑий ввод бÑл Ñ Ð¾Ñибкой
System.out.println("ÐведиÑе ÑÑоимоÑÑÑ ÑоваÑа (ÑÑбли.копейки, ÑиÑÑами, ÑеÑез запÑÑÑÑ):");
if (scanner.hasNextDouble()) {
price = scanner.nextDouble();
if (price > 0.0) {
break;
} else {
System.out.println("СÑоимоÑÑÑ ÑоваÑа не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÑиÑаÑелÑной или Ñавной нÑлÑ.");
}
} else {
System.out.println("ÐÑо не ÑиÑло. ÐведиÑе коÑÑекÑное знаÑение - ÑÑбли.копейки, ÑиÑÑами. ÐапÑимеÑ, 2,5");
}
}
return price;
}
private void addNewProduct(ArrayList products, String name, double price){
products.add(new Product(name,price)); //добавлÑем ÑÐ¾Ð²Ð°Ñ Ð² коллекÑиÑ
System.out.println("ÐовÑй ÑÐ¾Ð²Ð°Ñ "
+ name
+ " ÑÑоимоÑÑÑÑ "
+ Formatter.doubleFormat(price)
+ " "
+ Formatter.currencyName(price) + " ÑÑпеÑно добавлен.");
System.out.printf("ÐбÑÐ°Ñ ÑÑоимоÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð½ÑÑ
ÑоваÑов: %s %s%n", Formatter.doubleFormat(sumOrder(products)), Formatter.currencyName(sumOrder(products)));
}
private void showResult(ArrayList products){
if (products.size() > 0){
printProductsList(products);
System.out.println("ÐбÑÐ°Ñ ÑÑмма Ñека ÑоÑÑавлÑÐµÑ "+Formatter.doubleFormat(sumOrder(products)) +" "+ Formatter.currencyName(sumOrder(products)));
System.out.println("ÐаждÑй Ð²Ð°Ñ Ð´ÑÑг должен заплаÑиÑÑ "
+Formatter.doubleFormat(getAmountForFriend(numberOfFriends,products))
+ " "+ Formatter.currencyName(getAmountForFriend(numberOfFriends,products)));
} else {
System.out.println("Ðо неизвеÑÑной пÑиÑине Ð²Ð°Ñ ÑпиÑок ÑоваÑов пÑÑÑ.\nÐапÑÑÑиÑе пÑиложение повÑоÑно и внеÑиÑе в ÑпиÑок ÑоваÑÑ Ð¸ иÑ
ÑенÑ.");
}
}
//ÐеÑод ÑÑммиÑÑÐµÑ ÑÑоимоÑÑÑ Ð²ÑеÑ
ÑоваÑов
private double sumOrder(ArrayList products){
double result = 0.0;
if (products.size() > 0) {
for (Product currentProduct : products) {
result = result + currentProduct.productPrice;
}
} else {
System.out.println("ÐÐ°Ñ ÑÑÑÑ Ð¿ÑÑÑ, ÑÑммиÑоваÑÑ Ð½ÐµÑего.");
}
return result;
}
//ÐеÑод вÑÐ²Ð¾Ð´Ð¸Ñ ÑÑммÑ, коÑоÑÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ заплаÑиÑÑ ÐºÐ°Ð¶Ð´Ñй ÑÑаÑÑник веÑеÑинки
private double getAmountForFriend(int numbers, ArrayList products){
if (sumOrder(products) > 0.0) {
return sumOrder(products) / numbers;
} else {
System.out.println("У Ð²Ð°Ñ Ð½Ñлевой ÑÑÑÑ, делиÑÑ Ð½ÐµÑего.");
return 0.0;
}
}
//ÐеÑод вÑÐ²Ð¾Ð´Ð¸Ñ ÑпиÑок вÑеÑ
ÑоÑ
ÑаненнÑÑ
пÑодÑкÑов и иÑ
ÑÑоимоÑÑÑ Ð¿Ð¾ÑÑÑоÑно
private void printProductsList(ArrayList products){
if (products.size() > 0) {
System.out.println("ÐобавленнÑе ÑоваÑÑ:");
for (Product currentProduct: products) {
System.out.println(currentProduct.productName
+ " ÑÑоимоÑÑÑÑ "
+Formatter.doubleFormat(currentProduct.productPrice)
+" "
+Formatter.currencyName(currentProduct.productPrice));
}
}
}
}