From 6caa098cafe914326578ecd6e8f4650ca2bd4443 Mon Sep 17 00:00:00 2001 From: quieres Date: Mon, 20 Jan 2025 06:55:55 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 58 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..214034273 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,62 @@ +import android.provider.Settings; + +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Car car1 = new Car(); + Car car2 = new Car(); + Car car3 = new Car(); + + Scanner scanner = new Scanner(System.in); + + System.out.println("Введите название машины №1: "); + car1.name = scanner.next(); + car1.speed = getSpeed(scanner, "машины №1"); + + System.out.println("Введите название машины №2: "); + car2.name = scanner.next(); + car2.speed = getSpeed(scanner, "машины №2"); + + System.out.println("Введите название машины №3: "); + car3.name = scanner.next(); + car3.speed = getSpeed(scanner, "машины №3"); + + System.out.println("Данные автомобилей успешно введены!"); + + Car winner = Race.findWinner(car1, car2, car3); + System.out.println("Победитель в гонке: " + winner.name); + } + + private static int getSpeed(Scanner scanner, String carNumber) { + int speed; + while (true) { + System.out.println("Введите скорость (только целое число от 0 до 250) для " + carNumber + ":"); + speed = scanner.nextInt(); + if (speed < 0 || speed > 250) { + System.out.println("Введена некорректная скорость."); + } else { + break; + } + } + return speed; + } +} + +class Car { + String name; + int speed; +} + +class Race { + public static Car findWinner(Car car1, Car car2, Car car3){ + if (car1.speed > car2.speed && car1.speed > car3.speed) { + return car1; + } else if (car2.speed > car1.speed && car2.speed > car3.speed) { + return car2; + } + else { + return car3; + } } } \ No newline at end of file From 267eb5c37f7d38a50c20c6114de7238adb6ea04c Mon Sep 17 00:00:00 2001 From: quieres Date: Mon, 20 Jan 2025 07:02:48 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9F=D0=BE=D0=BC=D0=B5=D1=82=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 214034273..59f958977 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -48,6 +48,7 @@ class Car { int speed; } +// Я решил отказаться от расчёта пройденного расстояния, т.к. победитель всегда будет 1, внезависимости от того, по какому критерию выбирается победитель, по расстоянию или скорости, ведь умножение наибольшей скорости на 24 всегда выдаст наибольшее расстояние среди остальных. class Race { public static Car findWinner(Car car1, Car car2, Car car3){ if (car1.speed > car2.speed && car1.speed > car3.speed) { From 39d65330bc32024a983f216d7aff5412f9896389 Mon Sep 17 00:00:00 2001 From: quieres Date: Tue, 21 Jan 2025 07:56:40 +0300 Subject: [PATCH 3/3] Fix --- src/main/java/Car.java | 5 +++++ src/main/java/Main.java | 50 ++++++++++++++++++----------------------- src/main/java/Race.java | 23 +++++++++++++++++++ 3 files changed, 50 insertions(+), 28 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..0ae51ae65 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,5 @@ +class Car { + String name; + int speed; + int distance; +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 59f958977..96539eb8d 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,5 +1,5 @@ -import android.provider.Settings; - +import java.util.InputMismatchException; +import java.util.List; import java.util.Scanner; public class Main { @@ -24,40 +24,34 @@ public static void main(String[] args) { System.out.println("Данные автомобилей успешно введены!"); - Car winner = Race.findWinner(car1, car2, car3); - System.out.println("Победитель в гонке: " + winner.name); + List winners = Race.findWinner(car1, car2, car3); + + if (winners.size() == 1) { + System.out.println("Победитель в гонке: " + winners.getFirst().name); + } else { + System.out.println("Победители в гонке: "); + for (Car winner : winners) { + System.out.println(winner.name); + } + } } private static int getSpeed(Scanner scanner, String carNumber) { int speed; while (true) { System.out.println("Введите скорость (только целое число от 0 до 250) для " + carNumber + ":"); - speed = scanner.nextInt(); - if (speed < 0 || speed > 250) { - System.out.println("Введена некорректная скорость."); - } else { - break; + try { + speed = scanner.nextInt(); + if (speed < 0 || speed > 250) { + System.out.println("Введена некорректная скорость. Пожалуйста, введите значение от 0 до 250."); + } else { + break; + } + } catch (InputMismatchException e) { + System.out.println("Ошибка: Введено не целое число. Пожалуйста, введите целое число."); + scanner.next(); } } return speed; } -} - -class Car { - String name; - int speed; -} - -// Я решил отказаться от расчёта пройденного расстояния, т.к. победитель всегда будет 1, внезависимости от того, по какому критерию выбирается победитель, по расстоянию или скорости, ведь умножение наибольшей скорости на 24 всегда выдаст наибольшее расстояние среди остальных. -class Race { - public static Car findWinner(Car car1, Car car2, Car car3){ - if (car1.speed > car2.speed && car1.speed > car3.speed) { - return car1; - } else if (car2.speed > car1.speed && car2.speed > car3.speed) { - return car2; - } - else { - return car3; - } - } } \ 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..d12c833cb --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,23 @@ +import java.util.ArrayList; +import java.util.List; + +class Race { + public static List findWinner(Car car1, Car car2, Car car3) { + List winners = new ArrayList<>(); + int maxSpeed = Math.max(car1.speed, Math.max(car2.speed, car3.speed)); + + if (car1.speed == maxSpeed) { + car1.distance = car1.speed * 24; + winners.add(car1); + } + if (car2.speed == maxSpeed) { + car2.distance = car2.speed * 24; + winners.add(car2); + } + if (car3.speed == maxSpeed) { + car3.distance = car3.speed * 24; + winners.add(car3); + } + return winners; + } +} \ No newline at end of file