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
9 changes: 9 additions & 0 deletions src/main/java/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
public class Car {
final String name;
final int speed;

public Car(String name, int speed) {
this.name = name;
this.speed = speed;
}
}
17 changes: 16 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
import java.util.Scanner;

public class Main {
private static final int AMOUNT_OF_CARS = 3;

public static void main(String[] args) {
System.out.println("Hello world!");
Scanner scanner = new Scanner(System.in);



Race race = new Race();
System.out.println("Приветствуем тебя на гонке 24 часа Le Mans. Для того, чтобы узнать, кто победит, давай добавим машины в гонку");
System.out.printf("Количество машин в этой гонке: %d%n", AMOUNT_OF_CARS);

for (int i=0; i < AMOUNT_OF_CARS; i++) {
System.out.printf("Добавим машину номер %d%n", i+1);
race.addCarToRace(scanner);
}
race.whoIsWinner();
}
}
74 changes: 74 additions & 0 deletions src/main/java/Race.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import java.util.HashSet;
import java.util.Scanner;

public class Race {
private static final int MIN_CAR_SPEED = 0;
private static final int MAX_CAR_SPEED = 290;
private final HashSet<Car> cars = new HashSet<>();

void addCarToRace(Scanner scanner) {
String name = getName(scanner);
int speed = getSpeed(scanner);

Car newCar = new Car(name, speed);
cars.add(newCar);
System.out.println("Машина зарегистрирована на гонку\n");
}

private String getName(Scanner scanner) {
System.out.println("Введите название машины:");
String name = "";
while (true) {
// Чтобы давать названия автомобилям не в одну слитную строку. Например, "Летающий Пегас"
name = scanner.nextLine();
if (name.isEmpty()) {
System.out.println("У машины должно быть непустое имя. Попробуйте еще раз");
} else {
break;
}
}
return name;
}

private int getSpeed(Scanner scanner) {
int speed = -1;
System.out.println("Введите скорость машины.");
String getSpeedFormat = "Скорость должна быть целым значением больше %d и меньше или равно %d";
System.out.printf(getSpeedFormat + "\n", MIN_CAR_SPEED, MAX_CAR_SPEED);
while (true) {
String speedString = scanner.nextLine();
if (speedString.isEmpty()) {
System.out.printf("Пустое значение" + getSpeedFormat + "Попробуйте еще раз\n", MIN_CAR_SPEED, MAX_CAR_SPEED);
continue;
}
try {
speed = Integer.parseInt(speedString);
if (speed > MIN_CAR_SPEED && speed <= MAX_CAR_SPEED) {
break;
} else {
System.out.printf(getSpeedFormat + ". Попробуйте еще раз\n", MIN_CAR_SPEED, MAX_CAR_SPEED);
}
} catch(NumberFormatException nfe) {
System.out.printf("Кажется, вы ввели не целое число. Попробуйте еще раз: " + getSpeedFormat + "\n", MIN_CAR_SPEED, MAX_CAR_SPEED);
}
}
return speed;
}

void whoIsWinner() {
if (cars.isEmpty()) {
System.out.println("В гонке нет машин. Добавьте больше машин");
return;
}
// Мы берем случайное значение из Set'а, чтобы проиницилизировать первую переменную
Car leader = cars.iterator().next();
for(Car car : cars) {
// Потому что скорость * время = расстояние. Время для всех одинаково. Значит чем больше скорость, тем больше расстояние
if (car.speed > leader.speed) {
leader = car;
}
}
int leaderDistance = leader.speed * 24;
System.out.printf("Победитель %s, который проехал %d километров за 24 часа", leader.name, leaderDistance);
}
}