From 025b0bdaae0e7dba981dae70f8aba19c71a8e5c3 Mon Sep 17 00:00:00 2001 From: Masha Kasatkina Date: Mon, 24 Jun 2024 16:54:55 +0300 Subject: [PATCH 1/4] car + race + command menu implemented (but not tested) --- src/main/java/Car.java | 9 +++++ src/main/java/Main.java | 8 +++-- src/main/java/Race.java | 77 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 3 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 00000000..f7ffd9bd --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,9 @@ +public class Car { + Integer speed; + String name; + + public Car(Integer speed, String name) { + this.speed = speed; + this.name = name; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c43..a9811e15 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,10 @@ +import java.util.ArrayList; +import java.util.Scanner; + public class Main { + static Race race = new Race(); public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + race.contestStart(); } } diff --git a/src/main/java/Race.java b/src/main/java/Race.java new file mode 100644 index 00000000..ca52a365 --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,77 @@ +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Scanner; + +public class Race { + Car winner; + + Scanner scanner = new Scanner(System.in); + + ArrayList cars = new ArrayList<>(); + + public void calculateWinner(ArrayList cars) { + + Iterator iterator = cars.iterator(); + winner = cars.get(0); + while (iterator.hasNext()) { + Car element = iterator.next(); + if (element.speed >= winner.speed) { + winner = element; + } + } + } + + public void contestStart() { + // ваш код начнется здесь + // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости + + System.out.println("Введите команду "); + + while (true) { + printMenu(); + int command = scanner.nextInt(); + if (command == 1) { + carInput(); + } else if (command == 2) { + calculateWinner(cars); + System.out.println("Побеждает тачка:" + winner.name); + } else if (command == 0) { + System.out.println("Выход"); + break; + } else { + System.out.println("Извините, такой команды пока нет."); + } + } + } + + public static void printMenu() { + System.out.println("Что вы хотите сделать? "); + System.out.println("1 - Добавить тачку"); + System.out.println("2 - Узнать победителя гонки"); + System.out.println("0 - Выход"); + } + + public void carInput() { + while (true) { + System.out.println("Введите название тачилы"); + String name = scanner.nextLine(); + + System.out.println("Введите скорость > 0 но =< 250"); + Integer speed = scanner.nextInt(); + if (speed <= 0) { + System.out.println( + "Вы ввели отрицательную скорость.Введите скорость > 0 но =< 250" + ); + } else if (speed > 250) { + System.out.println( + "Вы ввели слишком большую скорость. Введите скорость > 0 но =< 250" + ); + } else { + cars.add(new Car(speed, name)); + calculateWinner(cars); + System.out.println("Тачка успешно создана!"); + break; + } + } + } +} From 1bb05ade8aa9904340e3d1a35d03262c0113e043 Mon Sep 17 00:00:00 2001 From: Masha Kasatkina Date: Mon, 24 Jun 2024 17:51:17 +0300 Subject: [PATCH 2/4] tested works fine --- src/main/java/Race.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/Race.java b/src/main/java/Race.java index ca52a365..f87c6428 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -10,9 +10,8 @@ public class Race { ArrayList cars = new ArrayList<>(); public void calculateWinner(ArrayList cars) { - - Iterator iterator = cars.iterator(); winner = cars.get(0); + Iterator iterator = cars.iterator(); while (iterator.hasNext()) { Car element = iterator.next(); if (element.speed >= winner.speed) { @@ -34,17 +33,17 @@ public void contestStart() { carInput(); } else if (command == 2) { calculateWinner(cars); - System.out.println("Побеждает тачка:" + winner.name); + System.out.println("Побеждает тачка:" + winner.name + " со скоростью " + winner.speed); } else if (command == 0) { System.out.println("Выход"); break; } else { - System.out.println("Извините, такой команды пока нет."); + System.out.println("Извините, такой команды пока нет"); } } } - public static void printMenu() { + public void printMenu() { System.out.println("Что вы хотите сделать? "); System.out.println("1 - Добавить тачку"); System.out.println("2 - Узнать победителя гонки"); @@ -53,11 +52,12 @@ public static void printMenu() { public void carInput() { while (true) { + System.out.println("Введите скорость > 0 но =< 250"); + Integer speed = scanner.nextInt(); + scanner.nextLine(); System.out.println("Введите название тачилы"); String name = scanner.nextLine(); - System.out.println("Введите скорость > 0 но =< 250"); - Integer speed = scanner.nextInt(); if (speed <= 0) { System.out.println( "Вы ввели отрицательную скорость.Введите скорость > 0 но =< 250" @@ -67,8 +67,8 @@ public void carInput() { "Вы ввели слишком большую скорость. Введите скорость > 0 но =< 250" ); } else { - cars.add(new Car(speed, name)); - calculateWinner(cars); + Car car = new Car(speed, name); + cars.add(car); System.out.println("Тачка успешно создана!"); break; } From 007c0d633623359a9b2f77ea84630075d03f64a3 Mon Sep 17 00:00:00 2001 From: Masha Kasatkina Date: Wed, 3 Jul 2024 20:31:35 +0300 Subject: [PATCH 3/4] review fixes --- src/main/java/Car.java | 23 ++++++++++++++++++++--- src/main/java/Main.java | 3 --- src/main/java/Race.java | 12 ++++-------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index f7ffd9bd..7dfc3d91 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,9 +1,26 @@ public class Car { - Integer speed; - String name; + private Integer speed; + private String name; public Car(Integer speed, String name) { - this.speed = speed; + this.setSpeed(speed); + this.setName(name); + } + + + public String getName() { + return name; + } + + public void setName(String name) { this.name = name; } + + public Integer getSpeed() { + return speed; + } + + public void setSpeed(Integer speed) { + this.speed = speed; + } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9811e15..a8b8dd95 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,3 @@ -import java.util.ArrayList; -import java.util.Scanner; - public class Main { static Race race = new Race(); diff --git a/src/main/java/Race.java b/src/main/java/Race.java index f87c6428..314145e0 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -11,18 +11,14 @@ public class Race { public void calculateWinner(ArrayList cars) { winner = cars.get(0); - Iterator iterator = cars.iterator(); - while (iterator.hasNext()) { - Car element = iterator.next(); - if (element.speed >= winner.speed) { - winner = element; + for(Car car: cars) { + if (car.getSpeed() >= winner.getSpeed()) { + winner = car; } } } public void contestStart() { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости System.out.println("Введите команду "); @@ -33,7 +29,7 @@ public void contestStart() { carInput(); } else if (command == 2) { calculateWinner(cars); - System.out.println("Побеждает тачка:" + winner.name + " со скоростью " + winner.speed); + System.out.println("Побеждает тачка:" + winner.getName() + " со скоростью " + winner.getSpeed()); } else if (command == 0) { System.out.println("Выход"); break; From 4877fb0d54680778ece73c8a03746867a200c546 Mon Sep 17 00:00:00 2001 From: Masha Kasatkina Date: Fri, 5 Jul 2024 20:02:54 +0300 Subject: [PATCH 4/4] review fixes --- src/main/java/Race.java | 76 ++++++++++++++++++++++++++++++++--------- 1 file changed, 60 insertions(+), 16 deletions(-) diff --git a/src/main/java/Race.java b/src/main/java/Race.java index 314145e0..452da77e 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -1,4 +1,5 @@ import java.util.ArrayList; +import java.util.InputMismatchException; import java.util.Iterator; import java.util.Scanner; @@ -48,26 +49,69 @@ public void printMenu() { public void carInput() { while (true) { - System.out.println("Введите скорость > 0 но =< 250"); - Integer speed = scanner.nextInt(); - scanner.nextLine(); - System.out.println("Введите название тачилы"); - String name = scanner.nextLine(); + Integer speed = inputSpeed(); + String name = inputName(); + Car car = new Car(speed, name); + cars.add(car); + System.out.println("Тачка успешно создана!"); + break; + } + } + + private String inputName() { + System.out.println("Введите название тачилы"); + return scanner.nextLine(); + } - if (speed <= 0) { - System.out.println( - "Вы ввели отрицательную скорость.Введите скорость > 0 но =< 250" - ); - } else if (speed > 250) { - System.out.println( - "Вы ввели слишком большую скорость. Введите скорость > 0 но =< 250" - ); + private Integer inputSpeed() { + Integer speed; + while(true) { + speed = scanSpeed(); + if (checkSpeed(speed)) { + break; } else { - Car car = new Car(speed, name); - cars.add(car); - System.out.println("Тачка успешно создана!"); + speed = inputSpeed(); break; } } + return speed; + } + + private Boolean checkSpeed(Integer speed) { + Boolean isCorrect; + if (speed <= 0) { + System.out.println( + "Вы ввели отрицательную скорость.Введите скорость > 0 но =< 250" + ); + isCorrect = false; + } else if (speed > 250) { + System.out.println( + "Вы ввели слишком большую скорость. Введите скорость > 0 но =< 250" + ); + isCorrect = false; + } else { + isCorrect = true; + } + return isCorrect; + } + + private Integer scanSpeed() { + Integer speed; + System.out.println("Введите скорость > 0 но =< 250"); + while (true) { + try { + speed = scanner.nextInt(); + scanner.nextLine(); // очищаем буфер + if (speed > 0 && speed <= 250) { + break; // выход из цикла при корректном вводе + } else { + System.out.println("Введите скорость в пределах > 0 но =< 250"); + } + } catch (InputMismatchException e) { + System.out.println("Вы ввели неверные данные. Введите скорость > 0 но =< 250 как целое число"); + scanner.nextLine(); // очищаем буфер + } + } + return speed; } }