From 92c8a08e162f546555b0307a03eb24818ee72ced Mon Sep 17 00:00:00 2001 From: Vimer969 Date: Wed, 16 Apr 2025 19:00:47 +0300 Subject: [PATCH 1/3] Cars --- src/main/java/Main.java | 89 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..0c19d2aa8 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,91 @@ +import java.util.Scanner; +// Класс Автомобиль +class Car { + String name; + int speed; + + public Car(String name, int speed) { + this.name = name; + this.speed = speed; + } + + public int getDistance() { + return speed * 24; + } + + public String getName() { + return name; + } +} + +// Класс Гонка +class Race { + Car winner; + + public void determineWinner(Car car1, Car car2, Car car3) { + winner = car1; + if (car2.getDistance() > winner.getDistance()) { + winner = car2; + } + if (car3.getDistance() > winner.getDistance()) { + winner = car3; + } + } + + public Car getWinner() { + return winner; + } +} + +// Класс Main 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]; + + for (int i = 0; i < 3; i++) { + String name; + int speed; // убрали начальную инициализацию переменной + + System.out.println("Введите название машины №" + (i + 1) + ":"); + while (true) { + name = scanner.nextLine().trim(); + if (!name.isEmpty()) break; + System.out.println("Название не может быть пустым. Введите ещё раз:"); + } + + System.out.println("Введите скорость машины №" + (i + 1) + ":"); + while (true) { + String input = scanner.nextLine().trim(); + if (isValidSpeed(input)) { + speed = Integer.parseInt(input); + if (speed > 0 && speed <= 250) { + break; + } else { + System.out.println("Неправильная скорость. Введите число от 1 до 250:"); + } + } else { + System.out.println("Неправильная скорость. Введите целое число:"); + } + } + + cars[i] = new Car(name, speed); + } + + Race race = new Race(); + race.determineWinner(cars[0], cars[1], cars[2]); + System.out.println("Самая быстрая машина: " + race.getWinner().getName()); + } + + // Метод для проверки, является ли строка числом + private static boolean isValidSpeed(String input) { + // Проверка, что строка состоит только из цифр + for (int i = 0; i < input.length(); i++) { + if (!Character.isDigit(input.charAt(i))) { + return false; + } + } + return true; } -} \ No newline at end of file +} From fdfdcef7eef1e93a5b6b416c71300e3adece9f5f Mon Sep 17 00:00:00 2001 From: Vimer969 Date: Fri, 18 Apr 2025 12:19:10 +0300 Subject: [PATCH 2/3] Update Main.java --- src/main/java/Main.java | 89 +++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 0c19d2aa8..fba1199c0 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -2,8 +2,8 @@ // Класс Автомобиль class Car { - String name; - int speed; + private String name; + private int speed; public Car(String name, int speed) { this.name = name; @@ -17,19 +17,22 @@ public int getDistance() { public String getName() { return name; } + + public int getSpeed() { + return speed; + } } // Класс Гонка class Race { - Car winner; + private Car winner; - public void determineWinner(Car car1, Car car2, Car car3) { - winner = car1; - if (car2.getDistance() > winner.getDistance()) { - winner = car2; - } - if (car3.getDistance() > winner.getDistance()) { - winner = car3; + public void determineWinner(Car[] cars) { + winner = cars[0]; + for (int i = 1; i < cars.length; i++) { + if (cars[i].getDistance() > winner.getDistance()) { + winner = cars[i]; + } } } @@ -38,49 +41,59 @@ public Car getWinner() { } } -// Класс Main +// Главный класс public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - Car[] cars = new Car[3]; + int numberOfCars = 3; // легко поменять + Car[] cars = new Car[numberOfCars]; - for (int i = 0; i < 3; i++) { - String name; - int speed; // убрали начальную инициализацию переменной + for (int i = 0; i < numberOfCars; i++) { + cars[i] = createCar(i + 1, scanner); + } - System.out.println("Введите название машины №" + (i + 1) + ":"); - while (true) { - name = scanner.nextLine().trim(); - if (!name.isEmpty()) break; - System.out.println("Название не может быть пустым. Введите ещё раз:"); - } + Race race = new Race(); + race.determineWinner(cars); - System.out.println("Введите скорость машины №" + (i + 1) + ":"); - while (true) { - String input = scanner.nextLine().trim(); - if (isValidSpeed(input)) { - speed = Integer.parseInt(input); - if (speed > 0 && speed <= 250) { - break; - } else { - System.out.println("Неправильная скорость. Введите число от 1 до 250:"); - } + Car winner = race.getWinner(); + System.out.println("\n🏁 Победитель гонки: " + winner.getName()); + System.out.println("Скорость: " + winner.getSpeed() + " км/ч"); + System.out.println("Проехал за 24 часа: " + winner.getDistance() + " км"); + } + + // Метод создания машины с вводом и валидацией + private static Car createCar(int number, Scanner scanner) { + String name; + int speed; + + System.out.println("Введите название машины №" + number + ":"); + while (true) { + name = scanner.nextLine().trim(); + if (!name.isEmpty()) break; + System.out.println("Название не может быть пустым. Введите ещё раз:"); + } + + System.out.println("Введите скорость машины №" + number + ":"); + while (true) { + String input = scanner.nextLine().trim(); + if (isValidSpeed(input)) { + speed = Integer.parseInt(input); + if (speed > 0 && speed <= 250) { + break; } else { - System.out.println("Неправильная скорость. Введите целое число:"); + System.out.println("Неправильная скорость. Введите число от 1 до 250:"); } + } else { + System.out.println("Неправильная скорость. Введите целое число:"); } - - cars[i] = new Car(name, speed); } - Race race = new Race(); - race.determineWinner(cars[0], cars[1], cars[2]); - System.out.println("Самая быстрая машина: " + race.getWinner().getName()); + return new Car(name, speed); } // Метод для проверки, является ли строка числом private static boolean isValidSpeed(String input) { - // Проверка, что строка состоит только из цифр + if (input.isEmpty()) return false; for (int i = 0; i < input.length(); i++) { if (!Character.isDigit(input.charAt(i))) { return false; From 25b357539802835a1a46f7c20278ff69712d2d10 Mon Sep 17 00:00:00 2001 From: Vimer969 Date: Fri, 18 Apr 2025 12:23:21 +0300 Subject: [PATCH 3/3] Update Main.java --- src/main/java/Main.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index fba1199c0..2c86ebf4d 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -45,7 +45,7 @@ public Car getWinner() { public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - int numberOfCars = 3; // легко поменять + int numberOfCars = 3; // можно легко изменить Car[] cars = new Car[numberOfCars]; for (int i = 0; i < numberOfCars; i++) { @@ -78,10 +78,10 @@ private static Car createCar(int number, Scanner scanner) { String input = scanner.nextLine().trim(); if (isValidSpeed(input)) { speed = Integer.parseInt(input); - if (speed > 0 && speed <= 250) { + if (speed >= 0 && speed <= 250) { // ✅ от 0 до 250 break; } else { - System.out.println("Неправильная скорость. Введите число от 1 до 250:"); + System.out.println("Неправильная скорость. Введите число от 0 до 250:"); } } else { System.out.println("Неправильная скорость. Введите целое число:");