diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 000000000..a0a4c6582 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,34 @@ +public class Car { + private int speed; + private String name; + private int distance; + + Car(int speed, String name) { + this.speed = speed; + this.name = name; + } + + public int getSpeed() { + return speed; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getDistance() { + return distance; + } + + public void setDistance(int distance) { + this.distance = distance; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..2a1acf68e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,71 @@ +import static java.lang.Integer.parseInt; + +import java.util.ArrayList; +import java.util.Scanner; public class Main { + public static Scanner scanner = new Scanner(System.in); + public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println("Добро пожаловать на 24 часа Ле-Мана!"); + Race race; + ArrayList racersList = new ArrayList<>(); + String needAnotherRaceStr; + boolean bNeedAnotherRace; + while (true) { + racersList.clear(); + while (true) { + System.out.println("Введите количество учавствующих в заезде автомобилей:"); + String racersNum = scanner.next(); + if (racersNum.matches("-?\\d+")) { + if (parseInt(racersNum) > 0) { + for (int i = 0; i < parseInt(racersNum); i++) { + racersList.add(appendCar(i)); + } + break; + } else { + System.out.println("Некорректное число участников заезда"); + } + } else System.out.println("Некорректное число участников заезда"); + } + race = new Race(racersList); + race.startRace(); + race.getResult(); + while (true) { + System.out.println("Желаете провести еще один заезд? Да/Нет"); + needAnotherRaceStr = scanner.next(); + if (needAnotherRaceStr.equals("Да")) { + bNeedAnotherRace = true; + break; + } else if (needAnotherRaceStr.equals("Нет")) { + bNeedAnotherRace = false; + break; + } else System.out.println("Некорректный ввод"); + } + if (!bNeedAnotherRace) + break; + } + } + + public static Car appendCar(int number) { + String carName; + String carSpeed; + while (true) { + System.out.println("Введите название автомобиля №" + (number + 1)); + carName = scanner.next(); + if (carName.isBlank()) { + System.out.println("Некорректное название автомобиля"); + } else break; + } + while (true) { + System.out.println("Введите скорость автомобиля №" + (number + 1) + " в диапазоне от 0 до 250 км\\ч"); + carSpeed = scanner.next(); + if (carSpeed.matches("-?\\d+")) { + if (parseInt(carSpeed) >= 0 && parseInt(carSpeed) <= 250) { + break; + } else System.out.println("Некорректная скорость"); + } else System.out.println("Некорректная скорость"); + } + return new Car(parseInt(carSpeed), carName); } } \ 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..105d7a1e6 --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,23 @@ +import java.util.ArrayList; +import java.util.Comparator; + +public class Race { + private ArrayList racers = new ArrayList<>(); + + Race(ArrayList Racers) { + this.racers.addAll(Racers); + } + + public void startRace() { + System.out.println("Начинаем заезд!"); + for (Car car : racers) { + car.setDistance(car.getSpeed() * 24); + } + } + + public void getResult() { + racers.sort(Comparator.comparingInt(Car::getDistance)); + System.out.println("Победитель заезда: " + racers.getLast().getName() + ", проехавший " + + racers.getLast().getDistance() + " за 24 часа"); + } +}