diff --git a/src/main/java/Automobile.java b/src/main/java/Automobile.java new file mode 100644 index 000000000..97d0fc3a0 --- /dev/null +++ b/src/main/java/Automobile.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..af85461c6 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -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; } } \ No newline at end of file diff --git a/src/main/java/Race.java b/src/main/java/Race.java new file mode 100644 index 000000000..bc719f9cb --- /dev/null +++ b/src/main/java/Race.java @@ -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; + } +} \ No newline at end of file