From 86626a866e3d0483f5d94df53c58d049d5014ee6 Mon Sep 17 00:00:00 2001 From: xabko Date: Sun, 2 Nov 2025 22:36:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=E2=84=96?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 27 ++++++++++++++++++ src/main/java/Main.java | 62 +++++++++++++++++++++++++++++++++++++++-- src/main/java/Race.java | 36 ++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Car.java create mode 100644 src/main/java/Race.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 000000000..07ba3a53d --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,27 @@ +/** + * Класс автомобиля - участника гонки + */ +public class Car { + private String name; // Название автомобиля + private int speed; // Скорость в км/ч + + public Car(String name, int speed) { + this.name = name; + this.speed = speed; + } + + public String getName() { + return name; + } + + public int getSpeed() { + return speed; + } + + /** + * Расчет расстояния за 24 часа + */ + public double calculateDistance() { + return speed * 24; // 24 часа гонки + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..432034503 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,64 @@ +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Scanner scanner = new Scanner(System.in); + Car[] cars = new Car[3]; + + System.out.println("=== 24 часа Ле-Мана ==="); + + // Ввод данных для трех автомобилей + for (int i = 0; i < 3; i++) { + System.out.println("— Введите название машины №" + (i + 1) + ":"); + String name = scanner.nextLine(); + + int speed = getValidSpeed(scanner, i + 1); + + cars[i] = new Car(name, speed); + } + + // Определяем победителя + Race race = new Race(cars); + Car winner = race.getLeader(); + + // Выводим результат + System.out.println("Самая быстрая машина: " + winner.getName()); + + scanner.close(); + } + + /** + * Метод для получения корректной скорости с проверкой + */ + private static int getValidSpeed(Scanner scanner, int carNumber) { + int speed = 0; + boolean isValid = false; + + while (!isValid) { + System.out.println("— Введите скорость машины №" + carNumber + ":"); + String input = scanner.nextLine(); + + try { + // Проверяем на дробное число + if (input.contains(".") || input.contains(",")) { + System.out.println("— Неправильная скорость"); + continue; + } + + speed = Integer.parseInt(input); + + // Проверяем диапазон + if (speed <= 0 || speed > 250) { + System.out.println("— Неправильная скорость"); + } else { + isValid = true; + } + + } catch (NumberFormatException e) { + System.out.println("— Неправильная скорость"); + } + } + + 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..e3dea9aff --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,36 @@ +/** + * Класс гонки - определяет победителя + */ +public class Race { + private Car[] cars; + private Car leader; + + public Race(Car[] cars) { + this.cars = cars; + calculateLeader(); + } + + /** + * Вычисляем лидера по пройденному расстоянию за 24 часа + */ + private void calculateLeader() { + if (cars == null || cars.length == 0) { + return; + } + + leader = cars[0]; + double maxDistance = leader.calculateDistance(); + + for (int i = 1; i < cars.length; i++) { + double currentDistance = cars[i].calculateDistance(); + if (currentDistance > maxDistance) { + maxDistance = currentDistance; + leader = cars[i]; + } + } + } + + public Car getLeader() { + return leader; + } +}