-
Notifications
You must be signed in to change notification settings - Fork 220
Expand file tree
/
Copy pathCalculator.java
More file actions
112 lines (96 loc) · 5.17 KB
/
Calculator.java
File metadata and controls
112 lines (96 loc) · 5.17 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
public class Calculator {
static String listProduct = "";
double priceProduct;
static double sumPriceProduct = 0.00;
static int payer;
//количество человек на чек (первый способ проверки ввода символов)
void addPeople(){
System.out.println("На скольких человек необходимо разделить счёт?");
while (true) {
try {
payer = Main.scanner.nextInt();
if (payer <= 1) {
System.out.println("Количество человек меньше или равно одному.\nВведите число заново:");
break;
}
} catch (Exception e) {
System.out.println("Вы ввели символ, а не число.\nПопробуйте ещё раз ввести количество человек");
Main.scanner.next();
}
}
}
//количество человек на чек (второй способ проверки ввода символов)
void addPeople2(){
System.out.println("На скольких человек необходимо разделить счёт?");
while (true) {
//вначале проверим число ли ввели вовсе
if (Main.scanner.hasNextInt()) {
payer = Main.scanner.nextInt();
if (payer <= 1) {
System.out.println("Количество человек меньше или равно одному.\nВведите число заново:");
break;
}
} else {
System.out.println("Вы ввели символ, а не число.\nПопробуйте ещё раз ввести количество человек");
Main.scanner.next();
}
}
}
//ввод товара
void addProduct() {
while (true) {
System.out.println("Наименование товара");
String product = Main.scanner.next();
//проверка на завершение цикла добавление товара
if (product.equalsIgnoreCase("Завершить")) {
break;
}
//вводим стоимость товара
System.out.println("Введите стоимость товара в руб.");
//вначале проверим число ли ввели вовсе
if (Main.scanner.hasNextDouble()) {
priceProduct = Main.scanner.nextDouble();
//проверяем отрицательную стоимость
while (priceProduct < 0) {
System.out.println("У товара не может быть отрицательная стоимсть.\nВведите стоимость товара заново:");
priceProduct = Main.scanner.nextDouble();
}
//сохраняем список товаров с ценой в виде текста чтобы потом вывести список
listProduct = listProduct + (product + (String.format(" - %.2f", priceProduct)) + " руб.\n");
//суммируем стоимость товара
sumPriceProduct = sumPriceProduct + priceProduct;
System.out.println("Товар добавлен успешно.\nВведите новый товар или введите \"Завершить\", чтобы прекратить ввод товара.\n");
} else {
System.out.println("Некорректный ввод числа.\nПопробуйте ещё раз.\n");
Main.scanner.next();
}
}
}
//вывод чека
void viewListProduct() {
System.out.println("Добавленные товары:");
System.out.println(listProduct);
System.out.println(String.format("Общая сумма чека - %.2f", sumPriceProduct) + GetRubleAddition() + "\n");
//выводим результаты рачсчёта счёта на каждого
System.out.println("Каждый должен заплатить - " + Math.floor(Calculator.sumPriceProduct / Calculator.payer) + GetRubleAddition());
}
//метод определения склонения падежа
public static String GetRubleAddition() {
double amountForEach = Math.floor(Calculator.sumPriceProduct / Calculator.payer);
//с 10 по 19 всегда "рублей"
if (amountForEach % 100 >= 10 || amountForEach % 100 < 20) {
return " рублей";
}
//остальные склонения по последней цифре
switch ((int) (amountForEach % 10)) {
case 1:
return " рубль";
case 2:
case 3:
case 4:
return " рубля";
default:
return " рублей";
}
}
}