Repository navigation
Expand file tree
/
Copy pathCalculator.java
More file actions
84 lines (78 loc) · 3.55 KB
/
Copy pathCalculator.java
File metadata and controls
84 lines (78 loc) · 3.55 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
import java.util.Scanner;
public class Calculator {
int numberOfPeople = 1;
StringBuilder allPurchasees = new StringBuilder();
double totalSum = 0;
public void readInputParameters(){
Scanner scanner = new Scanner(System.in);
while (true){
System.out.println("Введите количество человек: ");
if (scanner.hasNextInt()){
numberOfPeople = scanner.nextInt();
} else {
System.out.println("Получена ошибка ввода. Введите число.");
scanner.next();
continue;
}
if (numberOfPeople < 2){
System.out.println("Для работы программы нужно число > 1.");
} else {
break;
}
}
System.out.println("Отлично, количество гостей = " + numberOfPeople + ".");
}
public void readPurchases(){
Scanner scanner = new Scanner(System.in);
System.out.println("Давайте добавим ваши товары.");
while(true){
System.out.println("Введите название товара или 'Завершить' если вы закончили.");
String name = scanner.nextLine();
if (name.equalsIgnoreCase("Завершить")){
break;
}
double value;
while (true){
System.out.println("Введите стоимость " + name + ":");
if(scanner.hasNextDouble()) {
value = scanner.nextDouble();
if (value < 0){
System.out.println("Стоимость товара не может быть отрицательной.");
} else {
break; // всё ок, выходим из цикла
}
} else{
scanner.nextLine();
System.out.println("Стоимость товара должна быть числом.");
}
}
// после чтения double в буфере остаётся \n и nextLine в цикле для названия товара кушает пустую строку автоматом.
// этот nextLine съедает остатки после nextDouble.
scanner.nextLine();
totalSum += value;
allPurchasees.append(String.format("\n%s %.2f", name, value));
System.out.println(String.format("Товар %s со стоимостью %.2f успешно добавлен.", name, value));
}
}
public void finish(){
System.out.println("Добавленные товары:" + allPurchasees);
System.out.println(String.format("Итоговая стоимость: %.2f", totalSum));
double pricePerPerson = totalSum /numberOfPeople;
System.out.println(String.format("Каждый гость должен заплатить %.2f %s", pricePerPerson, getEnding(pricePerPerson)) );
}
String getEnding(double d){
String ret;
int tens = ((int)d) % 100;
int last = ((int)d)% 10;
if (tens > 10 && tens <20){
ret = "рублей";
} else if (last == 1){
ret = "рубль";
} else if (last == 2 || last == 3 || last == 4){
ret = "рубля";
} else {
ret = "рублей";
}
return ret;
}
}