diff --git a/README.md b/README.md index 63be1bfe0..745238179 100644 --- a/README.md +++ b/README.md @@ -1 +1,10 @@ -# Пустой репозиторий для работы с Java кодом в Android Studio +# Проектная работа No1 «24 часа Ле-Мана» +Простое консольное приложение, которое будет вычислять, кто же станет победителем гонки. +Правила гонки такие: у всех машин есть 24 часа, и кто проедет за них большую дистанцию — тот и победил. + +Критерии успешного выполнения: + 1. Приложение запрашивает у пользователя все данные: просит ввести названия автомобилей и их скорости. + 2. Приложение умеет корректно обрабатывать невалидный ввод данных. В случае невалидного ввода (нечисловое значение скорости, дробное значение скорости, скорость вне допустимого диапазона от 0 до 250, пустое название автомобиля и скорость) приложение выводит сообщение об ошибке и запрашивает повторный ввод данных до тех пор, пока не будут введены корректные значения. + 3. Весь код не написан в одном классе Main. + 4. Приложение успешно компилируется и выполняется без ошибок. + 5. Приложение корректно вычисляет и выводит победителя гонки diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 000000000..51ac332c0 --- /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/InteracterWithUserViaConsole.java b/src/main/java/InteracterWithUserViaConsole.java new file mode 100644 index 000000000..875c4e519 --- /dev/null +++ b/src/main/java/InteracterWithUserViaConsole.java @@ -0,0 +1,64 @@ +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 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)); + speedOfCarInStringFormat = scanner.nextLine(); + } + + 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 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)); + } + + +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..33f91707e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,20 @@ +import java.util.ArrayList; public class Main { + + 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("Hello world!"); + InteracterWithUserViaConsole interacter = new InteracterWithUserViaConsole(); + ArrayList cars = interacter.getCarsForRace(totalOFCars, minSpeedOfVehicle, maxSpeedOfVehicle); + Race race = new Race(cars, hoursInRace); + Car winCar = race.getWinnerCar(); + interacter.printInformationAboutWinCar(winCar); } -} \ 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..da7110929 --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,20 @@ +import java.util.ArrayList; +public class 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

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