Repository navigation
Expand file tree
/
Copy pathRace.java
More file actions
47 lines (40 loc) · 2.1 KB
/
Copy pathRace.java
File metadata and controls
47 lines (40 loc) · 2.1 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
package entities;
import java.util.ArrayList;
import java.util.Iterator;
public class Race {
public String getWinner(ArrayList<Car> participants) {
int maxDistance = 0;
//Определить максимальное расстояние
for (Car current : participants) {
if (current.speed * 24 > maxDistance) maxDistance = current.speed * 24;
}
//Удалить из списка всех, кто проехал меньше
Iterator<Car> iterator = participants.iterator();
while (iterator.hasNext()) {
Car current = iterator.next();
if (current.speed * 24 < maxDistance) iterator.remove();
}
//Форматирование вывода
if (participants.size() == 1) {
return "И нашим победителем становится " + participants.get(0).name + " с результатом " + formatDistance(maxDistance) + "!";
} else {
StringBuilder winners = new StringBuilder();
for (int i = 0; i < participants.size(); i++) {
winners.append(participants.get(i).name);
//Если победителей несколько, их надо разделить запятыми, а двух последних союзом и
if (i == participants.size() - 2) winners.append(" и ");
else if (i != participants.size() - 1) winners.append(", ");
}
return "Невероятно, но проехав по " + formatDistance(maxDistance) + ", " + winners + " финишировали с одинаковым результатом!";
}
}
//Для более красивого вывода расстояния и просто чтобы switch тоже использовать
String formatDistance(int distance) {
String correctWord = switch (distance % 10) {
case 1 -> "километр";
case 2, 3, 4 -> "километра";
default -> "километров";
};
return distance + " " + correctWord;
}
}