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

// Конструктор
public Automobile(String name, int speed) {
this.name = name;
this.speed = speed;
}

// Геттеры
public String getName() {
return name;
}

// Метод для расчета дистанции за 24 часа
public int calculateDistance() {
return speed * 24;
}
}
85 changes: 84 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,89 @@
import java.util.Scanner;

public class Main {
private static final int MIN_SPEED = 0;
private static final int MAX_SPEED = 250;
private static final int NUMBER_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 часа Ле-Мана\"!");
System.out.println();


for (int i = 1; i <= NUMBER_OF_CARS; i++) {
System.out.println();
System.out.println("--- Автомобиль №" + i + " ---");


String carName = getValidCarName(scanner, i);


int carSpeed = getValidCarSpeed(scanner, i);


Automobile car = new Automobile(carName, carSpeed);
race.determineLeader(car);

System.out.println("Автомобиль \"" + carName + "\" добавлен в гонку!");
}


System.out.println();
System.out.println("САМАЯ БЫСТРАЯ МАШИНА: " + race.getLeaderName());

scanner.close();
}


private static String getValidCarName(Scanner scanner, int carNumber) {
String carName = "";
boolean isValid = false;

while (!isValid) {
System.out.print("Введите название машины №" + carNumber + ": ");
carName = scanner.nextLine().trim();

// Проверка, что название не пустое
if (carName.isEmpty()) {
System.out.println("Ошибка: Название автомобиля не может быть пустым!");
} else {
isValid = true;
}
}

return carName;
}


private static int getValidCarSpeed(Scanner scanner, int carNumber) {
int speed = 0;
boolean isValid = false;

while (!isValid) {
System.out.print("Введите скорость машины №" + carNumber + " (1-250 км/ч): ");

// Проверяем, что введено целое число
if (scanner.hasNextInt()) {
speed = scanner.nextInt();
scanner.nextLine(); // Очистка буфера

// Проверка диапазона скорости
if (speed > MIN_SPEED && speed <= MAX_SPEED) {
isValid = true;
} else {
System.out.println("Неправильная скорость! Скорость должна быть от " +
(MIN_SPEED + 1) + " до " + MAX_SPEED + " км/ч.");
}
} else {
// Если введено не число
String invalidInput = scanner.nextLine();
System.out.println("Ошибка: \"" + invalidInput + "\" - это не число! Введите целое число.");
}
}

return speed;
}
}
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 @@
public class Race {
private String leaderName;
private int leaderDistance;


public Race() {
this.leaderName = "";
this.leaderDistance = 0;
}

public void determineLeader(Automobile car) {
int carDistance = car.calculateDistance();

if (carDistance > leaderDistance) {
leaderDistance = carDistance;
leaderName = car.getName();
}
}

public String getLeaderName() {
return leaderName;
}
}