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
88 lines (67 loc) · 3.97 KB
/
Main.java
File metadata and controls
88 lines (67 loc) · 3.97 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
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Race race = new Race();
System.out.println("Добро пожаловать в гоночный симулятор!");
System.out.println("В гонке участвуют 3 автомобиля.");
System.out.println("Допустимая скорость автомобилей: от 1 до 250 км/ч\n");
// Цикл для ввода данных о трёх автомобилях
for (int i = 1; i <= 3; i++) {
// Ввод названия автомобиля с проверкой
String name = inputCarNameValidation(scanner, i);
// Ввод скорости автомобиля с проверкой
int speed = inputSpeedValidation(scanner, i);
Car car = new Car(name, speed);
// Выводим информацию о введенном автомобиле
System.out.println("Автомобиль " + name + " (скорость: " + speed + " км/ч) добавлен.");
// Проверяем, стал ли новый автомобиль лидером
race.checkLeader(car);
System.out.println(); // Пустая строка для разделения
}
// Выводим итоги гонки
race.printRaceResults();
scanner.close();
}
private static String inputCarNameValidation(Scanner scanner, int carNumber) {
String name;
// Бесконечный цикл для проверки корректности ввода имени
while (true) {
System.out.println("Введите название автомобиля №" + carNumber + ":");
name = scanner.nextLine();
if (name.isBlank()) {
printErrorMessage("Ошибка: введено пустое название автомобиля.");
} else {
break; // Выходим из цикла если введено корректное имя
}
}
return name;
}
private static int inputSpeedValidation(Scanner scanner, int carNumber) {
int speed;
// Бесконечный цикл для проверки корректности ввода скорости
while (true) {
System.out.print("Введите скорость машины №" + carNumber + " (1-250 км/ч): \n");
// Проверяем, ввел ли пользователь целое число
if (scanner.hasNextInt()) {
speed = scanner.nextInt();
// Проверяем, находится ли скорость в допустимом диапазоне
if (speed > 0 && speed <= 250) {
scanner.nextLine(); // Очищаем буфер после nextInt()
break; // Выходим из цикла, если скорость корректна
} else {
printErrorMessage("Ошибка: скорость должна быть в диапазоне от 1 до 250 км/ч. Попробуйте снова.");
}
} else {
// Если пользователь ввел не число
String invalidInput = scanner.next();
printErrorMessage("Ошибка: '" + invalidInput + "' не является допустимым целым числом. Попробуйте снова.");
}
// scanner.nextLine() не нужен здесь, так как мы уже считали некорректный ввод через next() или nextInt()
}
return speed;
}
private static void printErrorMessage( String message) {
System.out.println("\u001B[31m" + message + " \u001B[0m");
}
}