From 7a12b9d90c7538160aafc46c44e902ea5eb81abd Mon Sep 17 00:00:00 2001 From: Mii Date: 2025年12月13日 01:56:04 +0300 Subject: [PATCH 1/8] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 15 +++++++++++++++ src/main/java/Main.java | 38 ++++++++++++++++++++++++++++++++++++-- src/main/java/Race.java | 18 ++++++++++++++++++ 3 files changed, 69 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..7299e1ed0 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,15 @@ +public class Car { + + String name; + int speed; + int serialNumber; + Car(String name, int speed, int serialNumber) { + this.name = name; + this.speed = speed; + this.serialNumber = serialNumber; + } + + public boolean isFaster(Car anotherCar) { + return this.speed> anotherCar.speed; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..6fc04714e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,40 @@ +import java.util.Scanner; +import java.lang.Math; +import java.util.ArrayList; public class Main { + + public static final int totalOfCars = 3; + public static final int minSpeed = 0; + public static final int maxSpeed = 250; + public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println(String.format("В гонке участвуют %d машины.", totalOfCars)); + ArrayList cars = new ArrayList(totalOfCars); + for (int currentSerialNumber=1; currentSerialNumber<=totalofcars; currentSerialNumber++) { + cars.add(getTrueCarInformationFromUser(currentSerialNumber)); + } + Race race = new Race(cars); + Car winnerCar = race.getWinnerCar(); + System.out.println(String.format("К финишу первой пришла машина No%d '%s'.", + winnerCar.serialNumber, winnerCar.name)); + } + + public static Car getTrueCarInformationFromUser(int serialNumber) { + Scanner scanner = new Scanner(System.in); + System.out.println(String.format("Введите название машины No%d:", serialNumber)); + String name = scanner.nextLine(); + int speed = 0; + while (speed<=minspeed || speed>maxSpeed) { + System.out.println(String.format("Введите скорость машины (от %d до %d):", + minSpeed, maxSpeed)); + speed = scanner.nextInt(); + } + Car anotherCar = new Car(name, speed, serialNumber); + System.out.println(String.format("Машина No%d '%s' со скоростью %d добавлена.", + anotherCar.serialNumber, anotherCar.name, anotherCar.speed)); + return anotherCar; + } -} \ 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..9c06eb62f --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,18 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Scanner; +import java.lang.Math; +public class Race { + ArrayList cars; + Race(ArrayList cars) { + this.cars = cars; + } + + public Car getWinnerCar() { + Car winnerCar = cars.getFirst(); + for (int i=1; i Date: 2025年12月13日 01:58:14 +0300 Subject: [PATCH 2/8] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Main.java | 1 - src/main/java/Race.java | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 6fc04714e..215c959e1 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,5 +1,4 @@ import java.util.Scanner; -import java.lang.Math; import java.util.ArrayList; public class Main { diff --git a/src/main/java/Race.java b/src/main/java/Race.java index 9c06eb62f..09118b8fc 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -1,7 +1,4 @@ import java.util.ArrayList; -import java.util.Arrays; -import java.util.Scanner; -import java.lang.Math; public class Race { ArrayList cars; Race(ArrayList cars) { From ab72d4c7504e36b29444dbe38492e8f172829aef Mon Sep 17 00:00:00 2001 From: Mii Date: 2025年12月13日 12:56:11 +0300 Subject: [PATCH 3/8] =?UTF-8?q?=D0=A0=D0=B5=D1=88=D0=B8=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=BD=D0=B5=D1=81=D1=82=D0=B8=20=D0=B2=D0=B7=D0=B0=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81.=20=D0=92?= =?UTF-8?q?=20main=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=20=D0=B4=D0=B5=D1=84?= =?UTF-8?q?=D0=BE=D0=BB=D1=82=D0=BD=D1=8B=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 3 ++ .../java/InteracterWithUserViaConsole.java | 39 +++++++++++++++++++ src/main/java/Main.java | 36 +++++------------ src/main/java/Race.java | 7 +++- 4 files changed, 57 insertions(+), 28 deletions(-) create mode 100644 src/main/java/InteracterWithUserViaConsole.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 7299e1ed0..6d0e408aa 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,8 +1,11 @@ public class Car { + public static final int minSpeed = 0; + public static final int maxSpeed = 250; String name; int speed; int serialNumber; + Car(String name, int speed, int serialNumber) { this.name = name; this.speed = speed; diff --git a/src/main/java/InteracterWithUserViaConsole.java b/src/main/java/InteracterWithUserViaConsole.java new file mode 100644 index 000000000..9046f15f0 --- /dev/null +++ b/src/main/java/InteracterWithUserViaConsole.java @@ -0,0 +1,39 @@ +import java.util.ArrayList; +import java.util.Scanner; + +public class InteracterWithUserViaConsole { + public ArrayList getCarsForRace( int totalOfCars, int minSpeed, int maxSpeed) { + ArrayList carsForRace = new ArrayList(totalOfCars); + System.out.println(String.format("В гонке участвуют %d машины.", totalOfCars)); + for (int currentSerialNumber=1; currentSerialNumber<=totalofcars; currentSerialNumber++) { + carsForRace.add(getTrueCarInformation(currentSerialNumber, minSpeed, maxSpeed)); + } + return carsForRace; + } + + private Car getTrueCarInformation(int serialNumber, int minSpeed, int maxSpeed) { + Scanner scanner = new Scanner(System.in); + System.out.println(String.format("Введите название машины No%d:", serialNumber)); + String name = scanner.nextLine(); + int speed = 0; + while ( !isValidInformation(speed, minSpeed, maxSpeed)) { + System.out.println(String.format("Введите скорость машины (%d, %d]:", + minSpeed, maxSpeed)); + speed = scanner.nextInt(); + } + Car anotherCar = new Car(name, speed, serialNumber); + System.out.println(String.format("Машина No%d '%s' со скоростью %d добавлена.", + anotherCar.serialNumber, anotherCar.name, anotherCar.speed)); + return anotherCar; + } + + private boolean isValidInformation(int speed, int minSpeed, int maxSpeed) { + return speed>minSpeed && speed<=maxspeed; + } + public void printInformationAboutWinCar(Car winCar){ + System.out.println(String.format("К финишу первой пришла машина No%d '%s'.", + winCar.serialNumber, winCar.name)); + } + + +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 215c959e1..cf2a13471 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,37 +3,19 @@ public class Main { - public static final int totalOfCars = 3; - public static final int minSpeed = 0; - public static final int maxSpeed = 250; + public static int totalOFCars = 3; + public static int hoursInRace = 24; + public static int minSpeedOfVehicle = 0; + public static int maxSpeedOfVehicle = 250; public static void main(String[] args) { - System.out.println(String.format("В гонке участвуют %d машины.", totalOfCars)); - ArrayList cars = new ArrayList(totalOfCars); - for (int currentSerialNumber=1; currentSerialNumber<=totalofcars; currentSerialNumber++) { - cars.add(getTrueCarInformationFromUser(currentSerialNumber)); - } - Race race = new Race(cars); - Car winnerCar = race.getWinnerCar(); - System.out.println(String.format("К финишу первой пришла машина No%d '%s'.", - winnerCar.serialNumber, winnerCar.name)); + InteracterWithUserViaConsole interacter = new InteracterWithUserViaConsole(); + ArrayList cars = interacter.getCarsForRace(totalOFCars, minSpeedOfVehicle, maxSpeedOfVehicle); + Race race = new Race(cars, hoursInRace); + Car winCar = race.getWinnerCar(); + interacter.printInformationAboutWinCar(winCar); } - public static Car getTrueCarInformationFromUser(int serialNumber) { - Scanner scanner = new Scanner(System.in); - System.out.println(String.format("Введите название машины No%d:", serialNumber)); - String name = scanner.nextLine(); - int speed = 0; - while (speed<=minspeed || speed>maxSpeed) { - System.out.println(String.format("Введите скорость машины (от %d до %d):", - minSpeed, maxSpeed)); - speed = scanner.nextInt(); - } - Car anotherCar = new Car(name, speed, serialNumber); - System.out.println(String.format("Машина No%d '%s' со скоростью %d добавлена.", - anotherCar.serialNumber, anotherCar.name, anotherCar.speed)); - return anotherCar; - } } diff --git a/src/main/java/Race.java b/src/main/java/Race.java index 09118b8fc..da7110929 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -1,10 +1,15 @@ import java.util.ArrayList; public class Race { ArrayList cars; - Race(ArrayList cars) { + int hoursInRace; + + + Race(ArrayList cars, int hoursInRace) { this.cars = cars; + this.hoursInRace = hoursInRace; } + public Car getWinnerCar() { Car winnerCar = cars.getFirst(); for (int i=1; i Date: 2025年12月13日 12:59:33 +0300 Subject: [PATCH 4/8] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D1=81=D1=82=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BA=D0=BE=D0=B4=20=D0=B2=20=D0=BC=D0=B5=D1=80=D1=83?= =?UTF-8?q?=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 3 --- src/main/java/Main.java | 1 - 2 files changed, 4 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 6d0e408aa..51ac332c0 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,7 +1,4 @@ public class Car { - public static final int minSpeed = 0; - public static final int maxSpeed = 250; - String name; int speed; int serialNumber; diff --git a/src/main/java/Main.java b/src/main/java/Main.java index cf2a13471..33f91707e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,4 +1,3 @@ -import java.util.Scanner; import java.util.ArrayList; public class Main { From c69c5ad07f9f686279c7a88973a742fdc3dbdab4 Mon Sep 17 00:00:00 2001 From: MiDoRe1 Date: 2025年12月13日 13:04:10 +0300 Subject: [PATCH 5/8] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Поправил Readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 63be1bfe0..c0147836b 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# Пустой репозиторий для работы с Java кодом в Android Studio +# Проектная работа No1 «24 часа Ле-Мана» +Простое консольное приложение, которое будет вычислять, кто же станет победителем гонки. +Правила гонки такие: у всех машин есть 24 часа, и кто проедет за них большую дистанцию — тот и победил. Мы немного упростили задачу, поэтому в нашей гонке участвуют всего 3 автомобиля. From c64d5e2db6ef75971a4c4b9add3a28be63a13b09 Mon Sep 17 00:00:00 2001 From: MiDoRe1 Date: 2025年12月13日 13:05:06 +0300 Subject: [PATCH 6/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c0147836b..51f992791 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # Проектная работа No1 «24 часа Ле-Мана» Простое консольное приложение, которое будет вычислять, кто же станет победителем гонки. -Правила гонки такие: у всех машин есть 24 часа, и кто проедет за них большую дистанцию — тот и победил. Мы немного упростили задачу, поэтому в нашей гонке участвуют всего 3 автомобиля. +Правила гонки такие: у всех машин есть 24 часа, и кто проедет за них большую дистанцию — тот и победил. From 6fb65e6684ca05e18f2fa487c74b6dc5a4c348eb Mon Sep 17 00:00:00 2001 From: Mii Date: 2025年12月13日 14:52:33 +0300 Subject: [PATCH 7/8] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D1=8E=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B3=D0=BB=D0=B0=D1=81=D0=BD=D0=BE=20=D1=83=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D0=B5=D0=BC=20=D1=81=D0=B4=D0=B0=D1=87=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/InteracterWithUserViaConsole.java | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/java/InteracterWithUserViaConsole.java b/src/main/java/InteracterWithUserViaConsole.java index 9046f15f0..875c4e519 100644 --- a/src/main/java/InteracterWithUserViaConsole.java +++ b/src/main/java/InteracterWithUserViaConsole.java @@ -13,23 +13,48 @@ public ArrayList getCarsForRace( int totalOfCars, int minSpeed, int maxSpee private Car getTrueCarInformation(int serialNumber, int minSpeed, int maxSpeed) { Scanner scanner = new Scanner(System.in); + System.out.println(String.format("Введите название машины No%d:", serialNumber)); - String name = scanner.nextLine(); - int speed = 0; - while ( !isValidInformation(speed, minSpeed, maxSpeed)) { + String nameOfCar = scanner.nextLine(); + while ( !isValidNameInformation(nameOfCar) ) { + System.out.println("Невалидный ввод."); + System.out.println(String.format("Введите название машины No%d:", serialNumber)); + nameOfCar = scanner.nextLine(); + } + + System.out.println(String.format("Введите скорость машины (%d, %d]:", + minSpeed, maxSpeed)); + String speedOfCarInStringFormat = scanner.nextLine(); + while ( !isValidSpeedInformation(speedOfCarInStringFormat, minSpeed, maxSpeed) ) { + System.out.println("Невалидный ввод."); System.out.println(String.format("Введите скорость машины (%d, %d]:", minSpeed, maxSpeed)); - speed = scanner.nextInt(); + speedOfCarInStringFormat = scanner.nextLine(); } - Car anotherCar = new Car(name, speed, serialNumber); + + int speedOfCar = Integer.parseInt(speedOfCarInStringFormat); + + Car anotherCar = new Car(nameOfCar, speedOfCar, serialNumber); System.out.println(String.format("Машина No%d '%s' со скоростью %d добавлена.", anotherCar.serialNumber, anotherCar.name, anotherCar.speed)); return anotherCar; } - private boolean isValidInformation(int speed, int minSpeed, int maxSpeed) { - return speed>minSpeed && speed<=maxspeed; + private boolean isValidNameInformation(String name){ + + return !name.isEmpty(); } + + private boolean isValidSpeedInformation(String speedInStringFormat, int minSpeed, int maxSpeed) { + Scanner scannerForInt = new Scanner(speedInStringFormat); + boolean speedIsValid = false; + if ( scannerForInt.hasNextInt() ) { + int speed = scannerForInt.nextInt(); + speedIsValid = speed>minSpeed && speed<=maxspeed; + } + return speedIsValid; + } + public void printInformationAboutWinCar(Car winCar){ System.out.println(String.format("К финишу первой пришла машина No%d '%s'.", winCar.serialNumber, winCar.name)); From bff37af2af9909be5b3a55aa45d08e283aba3022 Mon Sep 17 00:00:00 2001 From: MiDoRe1 Date: 2025年12月13日 14:54:24 +0300 Subject: [PATCH 8/8] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 51f992791..745238179 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ # Проектная работа No1 «24 часа Ле-Мана» Простое консольное приложение, которое будет вычислять, кто же станет победителем гонки. Правила гонки такие: у всех машин есть 24 часа, и кто проедет за них большую дистанцию — тот и победил. + +Критерии успешного выполнения: + 1. Приложение запрашивает у пользователя все данные: просит ввести названия автомобилей и их скорости. + 2. Приложение умеет корректно обрабатывать невалидный ввод данных. В случае невалидного ввода (нечисловое значение скорости, дробное значение скорости, скорость вне допустимого диапазона от 0 до 250, пустое название автомобиля и скорость) приложение выводит сообщение об ошибке и запрашивает повторный ввод данных до тех пор, пока не будут введены корректные значения. + 3. Весь код не написан в одном классе Main. + 4. Приложение успешно компилируется и выполняется без ошибок. + 5. Приложение корректно вычисляет и выводит победителя гонки

AltStyle によって変換されたページ (->オリジナル) /