Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions src/main/java/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
public class Car {
private int speed;
private String name;
private int distance;

Car(int speed, String name) {
this.speed = speed;
this.name = name;
}

public int getSpeed() {
return speed;
}

public void setSpeed(int speed) {
this.speed = speed;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getDistance() {
return distance;
}

public void setDistance(int distance) {
this.distance = distance;
}
}
67 changes: 66 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,71 @@
import static java.lang.Integer.parseInt;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
System.out.println("Hello world!");
System.out.println("Добро пожаловать на 24 часа Ле-Мана!");
Race race;
ArrayList<Car> racersList = new ArrayList<>();
String needAnotherRaceStr;
boolean bNeedAnotherRace;
while (true) {
racersList.clear();
while (true) {
System.out.println("Введите количество учавствующих в заезде автомобилей:");
String racersNum = scanner.next();
if (racersNum.matches("-?\\d+")) {
if (parseInt(racersNum) > 0) {
for (int i = 0; i < parseInt(racersNum); i++) {
racersList.add(appendCar(i));
}
break;
} else {
System.out.println("Некорректное число участников заезда");
}
} else System.out.println("Некорректное число участников заезда");
}
race = new Race(racersList);
race.startRace();
race.getResult();
while (true) {
System.out.println("Желаете провести еще один заезд? Да/Нет");
needAnotherRaceStr = scanner.next();
if (needAnotherRaceStr.equals("Да")) {
bNeedAnotherRace = true;
break;
} else if (needAnotherRaceStr.equals("Нет")) {
bNeedAnotherRace = false;
break;
} else System.out.println("Некорректный ввод");
}
if (!bNeedAnotherRace)
break;
}
}

public static Car appendCar(int number) {
String carName;
String carSpeed;
while (true) {
System.out.println("Введите название автомобиля №" + (number + 1));
carName = scanner.next();
if (carName.isBlank()) {
System.out.println("Некорректное название автомобиля");
} else break;
}
while (true) {
System.out.println("Введите скорость автомобиля №" + (number + 1) + " в диапазоне от 0 до 250 км\\ч");
carSpeed = scanner.next();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно использовать nextLine() вместо next() для строк

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Попробовал использовать nextLine(), но почему-то выполняться программа стала некорректно - не ждет пока пользователь что-то введет, а сразу идет выполняться дальше и выдает из-за этого ошибку проверки. Вернул next()

if (carSpeed.matches("-?\\d+")) {
if (parseInt(carSpeed) >= 0 && parseInt(carSpeed) <= 250) {
break;
} else System.out.println("Некорректная скорость");
} else System.out.println("Некорректная скорость");
}
return new Car(parseInt(carSpeed), carName);
}
}
23 changes: 23 additions & 0 deletions src/main/java/Race.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import java.util.ArrayList;
import java.util.Comparator;

public class Race {
private ArrayList<Car> racers = new ArrayList<>();

Race(ArrayList<Car> Racers) {
this.racers.addAll(Racers);
}

public void startRace() {
System.out.println("Начинаем заезд!");
for (Car car : racers) {
car.setDistance(car.getSpeed() * 24);
}
}

public void getResult() {
racers.sort(Comparator.comparingInt(Car::getDistance));
System.out.println("Победитель заезда: " + racers.getLast().getName() + ", проехавший "
+ racers.getLast().getDistance() + " за 24 часа");
}
}