Repository navigation
Expand file tree
/
Copy pathMain.java
More file actions
87 lines (79 loc) · 4.31 KB
/
Copy pathMain.java
File metadata and controls
87 lines (79 loc) · 4.31 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
import java.util.ArrayList;
import java.util.Scanner;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Список машин-участников
ArrayList<RacingCar> carList = new ArrayList<>();
// Список машин-победителей (на случай, если их будет несколько)
ArrayList<RacingCar> winner = new ArrayList<>();
// Сет имен машин (используется для проверки уникальности имени очередной машины)
HashSet<String> uniqNames = new HashSet<>();
// количество машин-участников
int countCars = 3;
// максимальная допустимая скорость (км/ч)
double maxSpeed = 250;
// Инициализация списка машин данными пользователя
for (int i = 0; i < countCars; i++){
String name = "";
double speed = -1;
// Считываем название машины
while(true){
System.out.println("- Введите название машины №" + (i + 1) + ":");
name = scanner.next();
System.out.print("\n");
boolean isUniq = uniqNames.add(name);
if (isUniq){
break;
} else {
System.out.println("- Машина с именем '" + name + "' уже зарегистрирована.");
}
}
// Считываем скорость машины
while(true){
System.out.println("- Введите скорость машины №" + (i + 1)
+ " в пределах (0, 250] км/ч:");
if (scanner.hasNextDouble()){
speed = scanner.nextDouble();
System.out.print("\n");
if (speed == 0) {
System.out.println("- Кажется, машина №" + (i + 1) + " сдалась без боя!");
} else if (speed < 0) {
System.out.println("- Кажется, машина №" + (i + 1)
+ " поехала в другую сторону!");
} else if (speed > maxSpeed) {
System.out.println("- Кто бы мог подумать, что на гонках может быть"
+ " превышение скорости?");
} else {
// Скорость введена корректно
break;
}
} else {
System.out.print("\n");
System.out.println("- Пожалуйста, используйте только численные значения." +
"\n- Если значение не целое, используйте ',' в качестве разделителя.");
String badData = scanner.next();
}
}
//Данные пользователя корректные, создаем объект машины и добавляем его в список машин
carList.add(new RacingCar(name, speed));
}
// Очищаем список уникальных имен машин, чтобы не занимать память
uniqNames.clear();
Race race = new Race();
// Определяем победителя
race.defineWinner(carList);
winner = race.getWinner();
// Выводим пользователю имена победителей
int countWinners = winner.size();
if (countWinners == 0){
System.out.println("Что-то пошло не так. Не удалось определить победителя.");
} else {
System.out.println("Победителем становится:");
for (int i = 0; i < countWinners; i++){
System.out.println(winner.get(i).getName());
}
}
}
}