Repository navigation
Expand file tree
/
Copy pathCalculator.java
More file actions
74 lines (61 loc) · 3.29 KB
/
Copy pathCalculator.java
File metadata and controls
74 lines (61 loc) · 3.29 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
import java.util.Scanner;
import java.util.ArrayList;
class Calculator {
private final int persons; // Добавил модификатор
public Calculator(int persons) {
this.persons = persons;
}
public void start() {
Scanner scanner = new Scanner(System.in);
ArrayList<Product> allProductCost = new ArrayList<>();
parentLoop:
while (true) { // Для ревью разбивать не стал, боюсь всё поломать =), но в качестве факультатива разломаю на методы
System.out.println("Введите наименование товара.");
String product = scanner.nextLine();
if (product == null || product.isEmpty() || !product.matches("\\p{L}*")) {
System.out.println("Ошибка:\nНаименование товара должно содержать только буквы.");
continue;
}
double cost = 0.0;
boolean validCost = false;
while (!validCost) {
try {
System.out.println("Введите стоимость товара в формате - \"рубли.копейки\".");
cost = Double.parseDouble(scanner.nextLine());
if (cost > 0) {
validCost = true;
System.out.println("Добавлен товар:\n" + product + " - " + Formatter.chooseRublesWord(cost));
} else {
System.out.println("Ошибка:\nСумма должна быть больше нуля.");
}
} catch (NumberFormatException e) {
System.out.println("Ошибка:\nСумма может быть указана только в цифрах.\nПример - 12.13.");
}
}
Product item = new Product(product, cost);
allProductCost.add(item);
childLoop:
while (true) {
System.out.println("Хотите добавить еще один товар? (Да/Завершить)");
String anotherOne = scanner.nextLine();
if (anotherOne.equalsIgnoreCase("Да")) {
continue parentLoop;
} else if (anotherOne.equalsIgnoreCase("Завершить")) {
System.out.println("Добавленные товары:");
break parentLoop;
} else {
System.out.println("Ошибка:\nВы ввели неверное значение." + "\nВведите команду \"Завершить\" чтобы выполнить расчет.");
continue; // Убрал лейбл "childLoop"
}
}
}
double totalCost = 0.0;
for (Product item : allProductCost) {
System.out.println(item);
totalCost += item.getPrice();
}
double costPerPerson = totalCost / persons;
System.out.println("Всего:\n" + Formatter.chooseRublesWord(totalCost));
System.out.println("Каждый должен заплатить по:\n" + Formatter.chooseRublesWord(costPerPerson));
}
}