Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/main/java/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
public class Car {
private static final int RACE_DURATION = 24;
public final String name;
public final int speed;
public Car(String name, int speed) {
this.name = name;
this.speed = speed;
}

public int calculateDistance (){
return speed*RACE_DURATION;
}
}


51 changes: 49 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,53 @@
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
private static final int MIN_SPEED = 1;
private static final int MAX_SPEED = 250;

public static void main(String[] args) {
System.out.println("Hello world!");

Scanner scanner = new Scanner(System.in);
Race race = new Race();

System.out.println("Добро пожаловать в гонку!");
System.out.println("Введите данные для трех автомобилей");
for (int i = 0; i < 3; i++) {
String name = readCarName(scanner, i + 1);
int speed = readCarSpeed(scanner, i + 1);
Car newCar = new Car(name, speed);
race.checkLeader(newCar);
}
System.out.println("Самая быстрая машина: " + race.getLeaderName());
}
private static String readCarName(Scanner scanner, int carNumber) {
while (true) {
System.out.println("Введите название автомобиля № " + carNumber + ":");
String name = scanner.nextLine().trim();
if (!name.isEmpty()) {
return name;
}
System.out.println("Ошибка: Название не может быть пустым. Попробуйте еще раз.");
}
}
}
private static int readCarSpeed(Scanner scanner, int carNumber){
while (true){
System.out.println("Введите скорость автомобиля № " + carNumber + " (" + MIN_SPEED + "-" + MAX_SPEED + "км/ч):");
try{
int speed = scanner.nextInt();
scanner.nextLine();
if (speed >= MIN_SPEED && speed <= MAX_SPEED) {
return speed;
} else {
System.out.println("Ошибка: скорость должна быть от " + MIN_SPEED + " до " + MAX_SPEED + " км/ч. Попробуйте еще раз.");
}
} catch (InputMismatchException e) {
System.out.println("Ошибка: введите целое число. Попробуйте еще раз.");
scanner.next();
}
}
}

}


24 changes: 24 additions & 0 deletions src/main/java/Race.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
public class Race {
private Car leader;
private int leaderDistance = 0;

public void checkLeader(Car newCar) {
int newCarDistance = newCar.calculateDistance();
if (leader == null) {
leader = newCar;
leaderDistance = newCarDistance;
} else {
if (newCarDistance > leaderDistance) {
leader = newCar;
leaderDistance = newCarDistance;
}
}
}

public String getLeaderName() {
if (leader != null) {
return leader.name;
}
return "Нет победителя";
}
}