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
21 changes: 21 additions & 0 deletions src/main/java/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
public class Car
{
private final String name;
private final int speed;

public Car(String name, int speed)
{
this.name = name;
this.speed = speed;
}

public String getNameCar()
{
return name;
}

public int getDistanceFor24Hours()
{
return speed * 24;
}
}
102 changes: 99 additions & 3 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,102 @@
import java.util.Scanner;
import java.util.HashSet;
import java.util.Set;
import java.util.List;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
class Main
{
private static final int CONFIG_CARS_COUNT = 3;
private static final int CONFIG_MIN_SPEED = 1;
private static final int CONFIG_MAX_SPEED = 250;

public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
Race race = new Race();
Set<String> usedNames = new HashSet<>();

for (int i = 1; i <= CONFIG_CARS_COUNT; i++)
{
String carName = readCarName(scanner, i, usedNames);
int carSpeed = readCarSpeed(scanner, carName);

Car car = new Car(carName, carSpeed);
race.addCarLead(car);
}

List<Car> winners = race.getLeaders();

if (winners.size() == 1)
{
System.out.println("Самая быстрая машина: " + winners.get(0).getNameCar());
} else
{
System.out.println("Самые быстрые машины:");
for (Car winner : winners)
{
System.out.println(winner.getNameCar());
}
}
}

private static String readCarName(Scanner scanner, int carNumber, Set<String> usedNames)
{
while (true)
{
System.out.print("Введите название автомобиля №" + carNumber + ": ");
String inputName = scanner.nextLine().trim();

if (inputName.isEmpty())
{
System.out.println("Ошибка: название автомобиля не может быть пустым.");
continue;
}

String tryCarName = inputName.toLowerCase();

if (usedNames.contains(tryCarName))
{
System.out.println("Ошибка: такое название уже введено. Введите уникальное название.");
continue;
}

usedNames.add(tryCarName);
return inputName;
}
}

private static int readCarSpeed(Scanner scanner, String carName)
{
while (true)
{
System.out.print("Введите скорость автомобиля \"" + carName + "\" (от "
+ CONFIG_MIN_SPEED + " до " + CONFIG_MAX_SPEED + "): ");
String inputSpeed = scanner.nextLine().trim();

if (inputSpeed.isEmpty())
{
System.out.println("Ошибка: скорость не может быть пустой.");
continue;
}

try
{
int speed = Integer.parseInt(inputSpeed);

if (speed < CONFIG_MIN_SPEED || speed > CONFIG_MAX_SPEED)
{
System.out.println("Ошибка: скорость должна быть в диапазоне от "
+ CONFIG_MIN_SPEED + " до " + CONFIG_MAX_SPEED + ".");
continue;
}

return speed;
} catch (NumberFormatException e)

{
System.out.println("Ошибка: введите целое число.");
}
}
}

}
29 changes: 29 additions & 0 deletions src/main/java/Race.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import java.util.ArrayList;
import java.util.List;

public class Race
{
private final List<Car> leaders = new ArrayList<>();
private int maxDistance = -1;

public void addCarLead(Car car)
{
int distance = car.getDistanceFor24Hours();

if (leaders.isEmpty() || distance > maxDistance)
{
leaders.clear();
leaders.add(car);
maxDistance = distance;
}
else if (distance == maxDistance)
{
leaders.add(car);
}
}

public List<Car> getLeaders()
{
return leaders;
}
}