forked from Yandex-Practicum/Java-Module-Project-YP
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMoneyCalc.java
More file actions
113 lines (73 loc) · 2.95 KB
/
MoneyCalc.java
File metadata and controls
113 lines (73 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MoneyCalc {
short qtyOfPeople;
double sumOfMoney;
List<Item> listOfItems;
MoneyCalc(short qty) {
qtyOfPeople = qty;
listOfItems = new ArrayList<>();
}
void addItems() {
do {
String name;
double price;
System.out.println("Введите название товара №" + (listOfItems.size() + 1) + ":");
Scanner scName = new Scanner(System.in);
name = scName.next();
System.out.println("Введите цену товара №" + (listOfItems.size() + 1) + " в формате \"рубли.копейки\":");
price = inputItemPrice();
listOfItems.add(new Item(name, price));
sumOfMoney += price;
System.out.println("Товар \"" + name + "\" успешно добавлен! Текущая сумма: " + printRoubles(sumOfMoney));
} while (!stopAddingItems());
}
boolean stopAddingItems () {
System.out.println("Чтобы продолжить добавление, введите любые символы. Или наберите \"Завершить\", чтобы выйти");
Scanner sc = new Scanner(System.in);
return (sc.next().equalsIgnoreCase("завершить"));
}
double inputItemPrice() {
while (true) {
Scanner scPrice = new Scanner(System.in);
if (scPrice.hasNextDouble()) {
double price = scPrice.nextDouble();
if (price > 0) {
return price;
}
}
System.out.println("Неверное значение цены в формате \"рубли.копейки\". Введите еще раз: ");
}
}
void printItems() {
System.out.println("Добавленные товары:");
for (Item it : listOfItems) {
System.out.println(it.itemName + ": " + String.format("%.2f", it.itemPrice));
}
System.out.println("Общая сумма: " + printRoubles(sumOfMoney));
}
void printDividedSum() {
System.out.println("Каждый из " + qtyOfPeople + " человек должен заплатить " + printRoubles(sumOfMoney / qtyOfPeople));
}
String printRoubles(double rub) {
String ending;
int r = ( (int) Math.floor(rub) ) % 100;
if (r >= 11 && r <= 14) ending = " рублей";
else {
switch (r % 10) {
case 1:
ending = " рубль";
break;
case 2:
case 3:
case 4:
ending = " рубля";
break;
default:
ending = " рублей";
}
}
return String.format("%.2f", rub) + ending;
}
}