Repository navigation
Expand file tree
/
Copy pathMain.java
More file actions
101 lines (85 loc) · 7.03 KB
/
Copy pathMain.java
File metadata and controls
101 lines (85 loc) · 7.03 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
import java.sql.SQLOutput;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//1. После запуска программа должна спрашивать у пользователя, на скольких человек необходимо разделить счёт.
System.out.println("Привет! На сколько человек мне разделить счет?");
//2. Программа должна выводить сообщение об ошибке, когда:
//- Количество человек, введённых пользователем, равно 1. В этом случае нет смысла ничего считать и делить.
Scanner scanner = new Scanner(System.in);
int sumGuests = 0;
while (true) {
try {
sumGuests = scanner.nextInt();
} catch (InputMismatchException ex) {
System.out.println("Введите число!");
} finally {
scanner.nextLine();
}
//- Количество человек меньше 1. Это некорректное значение для подсчёта.
if (sumGuests > 1) {
System.out.println("Вас " + sumGuests + " человека? Класс, тогда давайте поделим счет!");
break;
}
if (sumGuests == 1) {
System.out.println("Вы один? Жаль, но к сожалению тут делить нечего, кроме слез одиночества;) ");
}
//Если значение некорректное, то показать ошибку и заново попросить пользователя ввести корректное количество гостей.
if (sumGuests <= 0) {
System.out.println("Ой, кажется вы ошиблись;)! Введите от 2х человек и мы попробуем снова!");
}
System.out.println("Давайте попробуем снова: ");
}
//System.out.println("Давайте попробуем снова: ");
var c = new Calculator(sumGuests);
while (true) {
//Запросите у пользователя название товара и его стоимость. Стоимость должна быть в формате рубли.копейки, например 10.45 или 11.40.
String productName;
System.out.println("Какой у вас товар?");
productName = scanner.nextLine();
System.out.println("Напишите стоимость продукта: ");
double price = inputPrice(scanner);
//Полученный товар должен быть добавлен в калькулятор.
var p = new Product(productName, price);
c.add(p);
//При добавлении товара в калькулятор нужно считать текущую общую сумму всех товаров.
//Калькулятор должен запоминать названия всех добавленных товаров, чтобы выводить все товары, которые были в него добавлены.
//После добавления товара в калькулятор нужно показать пользователю сообщение об успешном добавлении товара.
System.out.println("Товар успешно добавлен!\nМожет еще по одной;)");
//После добавления товара нужно спрашивать у пользователя, хочет ли он добавить ещё один товар.
//Пользователь должен ввести команду "Завершить" для того, чтоб завершить процесс добавления товаров.
//Введение любого другого символа или слова должно запрашивать у пользователя следующий товар до тех пор, пока пользователь не введёт команду "Завершить" после добавления товара.
//Пользователь может ввести команду "Завершить" в любом регистре (завершить, ЗАВЕРШИТЬ, заВЕрШиТь и пр.), и это должно завершать процесс добавления товара.
var input = scanner.nextLine();
if (input.equalsIgnoreCase("завершить")) {
break;
}
}
//После того как пользователь введёт команду "Завершить" после добавления товаров, нужно показать пользователю все добавленные товары и посчитать, сколько должен заплатить каждый человек.
//Каждый новый добавленный товар должен быть выведен с новой строки после текста: "Добавленные товары:". Вы можете использовать символ \n в строке, чтобы указать компилятору,
// что нужно сделать в этом месте переноса строки.
System.out.println("Добавленные товары: ");
System.out.println(c.list);
//Вывод суммы, которую должен заплатить каждый человек, должен быть в формате "10.45". Дробная часть не должна содержать больше двух чисел после запятой.
//Сумма считается в рублях. Ваша задача — обработать правильный вывод. Если сумма 1.45, то вы должны вывести "1.45 рубль", а если сумма будет 3.20 или 4.00, вы
// должны вывести 3.20 рубля или 4.00 рубля. Окончания в слове "рубль" должны зависеть от целочисленной части.
System.out.println(c.getResult());
}
private static double inputPrice(Scanner scanner) {
while (true) {
try {
var r = scanner.nextDouble();
if (r <= 0) {
System.out.println("Цена должна быть положительной!");
continue;
}
return r;
} catch (InputMismatchException ext) {
System.out.println("Введите число!");
} finally {
scanner.nextLine();
}
}
}
}