forked from Yandex-Practicum/Java-Module-Project-YP
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
78 lines (73 loc) · 4.38 KB
/
Main.java
File metadata and controls
78 lines (73 loc) · 4.38 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
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //Создаём сканер
int peopleCount = peopleCountInput(scanner); //Запрашиваем кол-во человек
Calculator calculator = new Calculator(); //Создаём калькулятор
productInputCycle(scanner, calculator); //Добавление товаров в калькулятор
calculator.calcResult(peopleCount); //Считаем, выводим счёт + результат
scanner.close(); //Закрываем сканер
}
//Бесконечный цикл запроса кол-во человек
public static int peopleCountInput(Scanner scanner) {
int result;
while (true) {
System.out.println("На скольких человек необходимо разделить счёт? Введите значение > 1");
String peopleCount = scanner.nextLine();
if (!peopleCount.chars().allMatch(Character::isDigit)) { //проверка содержит ли строка символы кроме цифр 0-9
System.out.println("Необходимо ввести целое положительное число > 1");
continue;
}
result = Integer.parseInt(peopleCount);
if (result == 1)
System.out.println("В этом случае нет смысла ничего считать и делить. Введите значение > 1");
else if (result < 1)
System.out.println("Количество человек меньше 1. Это некорректное значение для подсчёта. Введите значение > 1");
else break; //result > 1
}
System.out.println("Количество человек = " + result);
return result;
}
//Бесконечный цикл запроса действия (добавить товар или выйти)
public static void productInputCycle(Scanner scanner, Calculator calculator) {
while (true) {
productAddInput(scanner, calculator);
System.out.println("Добавить ещё один товар? Если да - введите любой символ, если нет - введите \"Завершить\"");
String userChoice = scanner.nextLine();
if (userChoice.equalsIgnoreCase("завершить")) break;
}
}
//Бесконечный цикл запроса товара
public static void productAddInput(Scanner scanner, Calculator calculator) {
while (true) {
System.out.println("-----------------------");
System.out.println("Введите название товара");
String productName = scanner.nextLine();
System.out.println("Введите стоимость товара (например 10.45 или 11.40)");
String productPrice = scanner.nextLine();
if (productName.isEmpty())
System.out.println("Вы ввели пустое название товара, необходимо ввести название");
else if (!isFloat(productPrice))
System.out.println("Вы ввели неправильное значение стоимости");
else if (Float.parseFloat(productPrice) <= 0)
System.out.println("Вы ввели значение стоимости меньше или равное 0, необходимо ввести значение > 0");
else {//Если прошли все проверки - создаём и добавляем товар
Product product = new Product(productName, Float.parseFloat(productPrice));
calculator.addProduct(product);
System.out.println("-----------------------");
break;
}
}
}
//Проверяем строку на возможность преобразования в Float
public static boolean isFloat(String str) {
float floatValue;
try {
floatValue = Float.parseFloat(str);
return true;
} catch (NumberFormatException e) {
//DO SOME
}
return false;
}
}