From efd6ead6b6f1dcc2033654d8b9c5f7f587981a44 Mon Sep 17 00:00:00 2001 From: neret Date: Wed, 28 Jan 2026 23:10:29 +0400 Subject: [PATCH 1/2] =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 91 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..070c3fbfa 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,95 @@ +import java.util.Scanner ; +// 1. Класс Автомобиль +class Car { + String name; + int speed; + + public Car(String name, int speed) { + this.name = name; + this.speed = speed; + } + + int getDistance() { + return speed * 24; + } +} + +// 2. Класс Гонка +class Race { + Car[] cars; + Car leader; + + public Race(Car[] cars) { + this.cars = cars; + findLeader(); + } + + void findLeader() { + leader = cars[0]; + + for (int i = 1; i < cars.length; i++) { + if (cars[i].getDistance() > leader.getDistance()) { + leader = cars[i]; + } + } + } + + void showWinner() { + System.out.println("Самая быстрая машина: " + leader.name); + } +} + +// 3. Главный класс public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Scanner scanner = new Scanner(System.in); + + System.out.println("=== Гонка автомобилей ==="); + System.out.println("Введите данные для 3 автомобилей\n"); + + Car[] cars = new Car[3]; + + for (int i = 0; i < 3; i++) { + System.out.println("Автомобиль №" + (i + 1) + ":"); + + System.out.print("Введите название: "); + String name = scanner.nextLine(); + + while (name.isEmpty()) { + System.out.println("Ошибка: название не может быть пустым!"); + System.out.print("Введите название: "); + name = scanner.nextLine(); + } + + int speed = 0; + boolean correctSpeed = false; + + while (!correctSpeed) { + System.out.print("Введите скорость (1-250 км/ч): "); + + if (scanner.hasNextInt()) { + speed = scanner.nextInt(); + scanner.nextLine(); + + if (speed > 0 && speed <= 250) { + correctSpeed = true; + } else { + System.out.println("Ошибка: скорость должна быть от 1 до 250!"); + } + } else { + System.out.println("Ошибка: введите целое число!"); + scanner.nextLine(); + } + } + + cars[i] = new Car(name, speed); + System.out.println(); + } + + Race race = new Race(cars); + race.showWinner(); + + scanner.close(); } } \ No newline at end of file From 318f460e10a14c6db7ad1315a375110f3799c4d8 Mon Sep 17 00:00:00 2001 From: neret Date: Thu, 29 Jan 2026 19:16:48 +0400 Subject: [PATCH 2/2] =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 116 ++++++++++++++++++++++++---------------- 1 file changed, 69 insertions(+), 47 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 070c3fbfa..b6e4e655d 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,15 +1,23 @@ -import java.util.Scanner ; +import java.util.Scanner; // 1. Класс Автомобиль class Car { - String name; - int speed; + private final String name; + private final int speed; public Car(String name, int speed) { this.name = name; this.speed = speed; } + public String getName() { + return name; + } + + public int getSpeed() { + return speed; + } + int getDistance() { return speed * 24; } @@ -17,79 +25,93 @@ int getDistance() { // 2. Класс Гонка class Race { - Car[] cars; - Car leader; + private Car winner; - public Race(Car[] cars) { - this.cars = cars; - findLeader(); + public Car getWinner() { + return winner; } - void findLeader() { - leader = cars[0]; - - for (int i = 1; i < cars.length; i++) { - if (cars[i].getDistance() > leader.getDistance()) { - leader = cars[i]; - } + void updateWinner(Car currentCar) { + if (winner == null || currentCar.getDistance() > winner.getDistance()) { + winner = currentCar; } } void showWinner() { - System.out.println("Самая быстрая машина: " + leader.name); + if (winner != null) { + System.out.println("Самая быстрая машина: " + winner.getName()); + } else { + System.out.println("Нет данных об автомобилях"); + } } } // 3. Главный класс public class Main { + private static final int MIN_SPEED = 1; + private static final int MAX_SPEED = 250; + private static final int CAR_COUNT = 3; + public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("=== Гонка автомобилей ==="); - System.out.println("Введите данные для 3 автомобилей\n"); + System.out.println("Введите данные для " + CAR_COUNT + " автомобилей\n"); - Car[] cars = new Car[3]; + Race race = new Race(); - for (int i = 0; i < 3; i++) { + for (int i = 0; i < CAR_COUNT; i++) { System.out.println("Автомобиль №" + (i + 1) + ":"); - System.out.print("Введите название: "); - String name = scanner.nextLine(); + String name = readNonEmptyString(scanner, "Введите название: "); - while (name.isEmpty()) { - System.out.println("Ошибка: название не может быть пустым!"); - System.out.print("Введите название: "); - name = scanner.nextLine(); - } - - int speed = 0; - boolean correctSpeed = false; + int speed = readValidSpeed(scanner); - while (!correctSpeed) { - System.out.print("Введите скорость (1-250 км/ч): "); + Car car = new Car(name, speed); - if (scanner.hasNextInt()) { - speed = scanner.nextInt(); - scanner.nextLine(); + race.updateWinner(car); - if (speed > 0 && speed <= 250) { - correctSpeed = true; - } else { - System.out.println("Ошибка: скорость должна быть от 1 до 250!"); - } - } else { - System.out.println("Ошибка: введите целое число!"); - scanner.nextLine(); - } - } - - cars[i] = new Car(name, speed); System.out.println(); } - Race race = new Race(cars); race.showWinner(); scanner.close(); } + + private static String readNonEmptyString(Scanner scanner, String prompt) { + String input; + + while (true) { + System.out.print(prompt); + input = scanner.nextLine().trim(); + + if (!input.isEmpty()) { + return input; + } + + System.out.println("Ошибка: название не может быть пустым!"); + } + } + + + private static int readValidSpeed(Scanner scanner) { + while (true) { + System.out.print("Введите скорость (" + MIN_SPEED + "-" + MAX_SPEED + " км/ч): "); + + if (scanner.hasNextInt()) { + int speed = scanner.nextInt(); + scanner.nextLine(); + + if (speed >= MIN_SPEED && speed <= MAX_SPEED) { + return speed; + } else { + System.out.println("Ошибка: скорость должна быть от " + MIN_SPEED + " до " + MAX_SPEED + "!"); + } + } else { + System.out.println("Ошибка: введите целое число!"); + scanner.nextLine(); + } + } + } } \ No newline at end of file