From d73a0922d28457cc95c9c6722049e618ca615920 Mon Sep 17 00:00:00 2001 From: I-IX-VIII-IV Date: Mon, 17 Mar 2025 14:51:28 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9C=D0=BE=D1=8F=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=B0=D1=8F=20=D0=BF=D1=80=D0=B0=D0=BA=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=B0=D1=8F=20=D0=B2=20=D0=9F=D1=80=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D0=BA=D1=83=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Auto.java | 19 +++++++++++++++++++ src/main/java/Main.java | 36 +++++++++++++++++++++++++++++++++++- src/main/java/Race.java | 22 ++++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Auto.java create mode 100644 src/main/java/Race.java diff --git a/src/main/java/Auto.java b/src/main/java/Auto.java new file mode 100644 index 000000000..aa1265a21 --- /dev/null +++ b/src/main/java/Auto.java @@ -0,0 +1,19 @@ +public class Auto { + String name; + int speed; + + public Auto(String name, int speed) { + this.name = name; + this.speed = speed; + } + + public String getName() { + return name; + } + + public int getSpeed() { + return speed; + } +} + + diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..df530bf74 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,40 @@ +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Scanner scanner = new Scanner(System.in); + Race race = new Race(); + + for (int i = 1; i <= 3; i++) { + System.out.println("Автомобиль #" + i); + + System.out.print("Название: "); + String name = scanner.nextLine(); + + int speed = getValidSpeed(scanner, name); + + race.addCar(new Auto(name, speed)); + } + + System.out.println("\nПобедитель: " + race.defineWinner().getName()); + } + + private static int getValidSpeed(Scanner scanner, String name) { + while (true) { + System.out.print("Скорость для " + name + " (1-250): "); + + if (scanner.hasNextInt()) { + int speed = scanner.nextInt(); + scanner.nextLine(); + + if (speed > 0 && speed <= 250) { + return speed; + } + System.out.println("Ошибка: скорость должна быть от 1 до 250!"); + } else { + System.out.println("Ошибка: введите ЦЕЛОЕ число!"); + scanner.nextLine(); + } + } } } \ 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..dfdd5a0b0 --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,22 @@ +import java.util.ArrayList; + +public class Race { + ArrayList cars = new ArrayList<>(); + + public void addCar(Auto car) { + cars.add(car); + } + + public Auto defineWinner() { + if (cars.isEmpty()) { + throw new IllegalStateException("Нет автомобилей для определения победителя!"); + } + Auto winner = cars.get(0); + for (Auto car : cars) { + if (car.getSpeed() > winner.getSpeed()) { + winner = car; + } + } + return winner; + } +} From c628ad38cf08bdcb01d2ca79a7fcfd6e7aa89534 Mon Sep 17 00:00:00 2001 From: I-IX-VIII-IV Date: Mon, 17 Mar 2025 15:01:53 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9C=D0=BE=D1=8F=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=B0=D1=8F=20=D0=BF=D1=80=D0=B0=D0=BA=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=B0=D1=8F=20=D0=B2=20=D0=9F=D1=80=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D0=BA=D1=83=D0=BC=D0=B5=20(=D1=81=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=D0=BC=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 22 +++++++++++++--------- src/main/java/Race.java | 24 ++++++++++++++---------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index df530bf74..2bb5095ed 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -8,15 +8,19 @@ public static void main(String[] args) { for (int i = 1; i <= 3; i++) { System.out.println("Автомобиль #" + i); - System.out.print("Название: "); - String name = scanner.nextLine(); - + String name = getName(scanner); int speed = getValidSpeed(scanner, name); race.addCar(new Auto(name, speed)); + System.out.println("Текущий лидер: " + race.getCurrentLeader()); } - System.out.println("\nПобедитель: " + race.defineWinner().getName()); + System.out.println("\nФинальный победитель: " + race.getCurrentLeader()); + } + + private static String getName(Scanner scanner) { + System.out.print("Название: "); + return scanner.nextLine(); } private static int getValidSpeed(Scanner scanner, String name) { @@ -25,16 +29,16 @@ private static int getValidSpeed(Scanner scanner, String name) { if (scanner.hasNextInt()) { int speed = scanner.nextInt(); - scanner.nextLine(); + scanner.nextLine(); // Очистка буфера if (speed > 0 && speed <= 250) { return speed; } - System.out.println("Ошибка: скорость должна быть от 1 до 250!"); + System.out.println("Ошибка: скорость должна быть 1-250!"); } else { - System.out.println("Ошибка: введите ЦЕЛОЕ число!"); - scanner.nextLine(); + System.out.println("Ошибка: введите целое число!"); + scanner.nextLine(); // Очистка неверного ввода } } } -} \ No newline at end of file +} diff --git a/src/main/java/Race.java b/src/main/java/Race.java index dfdd5a0b0..a7ab288fc 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -1,22 +1,26 @@ import java.util.ArrayList; public class Race { + String currentLeaderName = "Лидер отсутствует"; + int currentLeaderDistance = 0; ArrayList cars = new ArrayList<>(); public void addCar(Auto car) { cars.add(car); + updateLeader(car); } - public Auto defineWinner() { - if (cars.isEmpty()) { - throw new IllegalStateException("Нет автомобилей для определения победителя!"); - } - Auto winner = cars.get(0); - for (Auto car : cars) { - if (car.getSpeed() > winner.getSpeed()) { - winner = car; - } + private void updateLeader(Auto newCar) { + int newDistance = 24 * newCar.getSpeed(); + + if (newDistance > currentLeaderDistance) { + currentLeaderDistance = newDistance; + currentLeaderName = newCar.getName(); } - return winner; + } + + public String getCurrentLeader() { + return currentLeaderName; } } +