Repository navigation
Expand file tree
/
Copy pathMain.java
More file actions
101 lines (90 loc) · 3.85 KB
/
Copy pathMain.java
File metadata and controls
101 lines (90 loc) · 3.85 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
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
raceStart();
}
public static void raceStart(){
Scanner scanner = new Scanner(System.in);
ArrayList<Car> allCompetitors = new ArrayList<>();
for (int i=1; i<=3; i++){
System.out.println("Введите название машины №" + i +"\"");
String userInputBrand = scanner.next();//считывание строки до пробела
String userInputSpeed = "";
int speed = 0;
while (!checkSpeedValue(speed) || !tryParse(userInputSpeed)) {
System.out.println("Введите скорость машины №" + i + "\"");
userInputSpeed = scanner.next();
speed = tryParse(userInputSpeed)?Integer.parseInt(userInputSpeed): 0;
if(!checkSpeedValue(speed) || !tryParse(userInputSpeed)) {
System.out.println("Неправильная скорость");
}
}
allCompetitors.add(new Car(userInputBrand,speed));
}
scanner.close();
Race winner = new Race();
winner.calculateWhoIsWinner(allCompetitors);
}
public static boolean tryParse (String speed) {
try {
Integer.parseInt(speed);
return true;
} catch (NumberFormatException e) {
return false;
}
}
public static boolean checkSpeedValue(int speed) {
return (speed > 0 && speed <= 250) ? true : false;
}
}
class Car {
public String carBrand;
public int speedValue;
public Car (String carBrand, int speedValue) {
this.carBrand = carBrand;
this.speedValue = speedValue;
}
}
class Race {
public Car leader;
public int completedWay;
public Race (Car leader, int completedPath) {
this.leader = leader;
this.completedWay = completedPath;
}
public Race(){
}
public void calculateWhoIsWinner(ArrayList<Car> allCompetitors) {
//Длительность гонки составляет 24 часа. Известна скорость. Необходимо найти пройденный путь.
//Рассчитываем полученные результаты гонщиков и добавляем их в leadersList.
ArrayList<Race> leadersList = new ArrayList<>();
for (Car racerCar : allCompetitors) {
leadersList.add(new Race(racerCar, racerCar.speedValue * 24));
}
//С помощью Iterator удаляем элементы удовлетворяющие условию way > element.completedWay.
//Таким образом получаем список, который содержит победителя(-ей) гонки.
for (Car racerCar : allCompetitors) {
int way = racerCar.speedValue*24;
Iterator<Race> iterator = leadersList.iterator();
while (iterator.hasNext()) {
Race element = iterator.next();
if (way > element.completedWay) {
iterator.remove();
}
}
}
//Вывод результатов гонки.
if (leadersList.size() == 1) {
System.out.println("Самая быстрая машина: " + leadersList.getFirst().leader.carBrand);
} else if (leadersList.size() >= 2) {
System.out.println(leadersList.size() + " машины прибыли с одинаковым результатом:");
for (Race leader : leadersList) {
System.out.println(leader.leader.carBrand);
}
} else {
System.out.println("Победителя определить не удалось");
}
}
}