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
13 changes: 10 additions & 3 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
import constructor.Race;
import constructor.CarConstructor;

public class Main {

public static void main(String[] args) {
// ваш код начнется здесь
// вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости
System.out.println("Привет Мир");
CarConstructor constructor = new CarConstructor();
Race race = new Race(constructor);
while (constructor.carsSize() < 3) {
race.prepare();
}
race.getFasterCar();
}

}
30 changes: 30 additions & 0 deletions src/main/java/constructor/CarConstructor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package constructor;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import models.Car;

public class CarConstructor {

private final Set<Car> cars = new HashSet<>();

public boolean addCar(String name, int speed) {
Car newCar = new Car(name, speed);
if (cars.stream().anyMatch(car -> car.name.equals(name))) {
System.out.println("Автомобиль с именем '" + name + "' уже существует.");
return false;
}
return cars.add(newCar);

}

public int carsSize() {
return cars.size();
}

public Set<Car> getCars() {
return Collections.unmodifiableSet(cars);
}
}
62 changes: 62 additions & 0 deletions src/main/java/constructor/Race.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package constructor;

import java.util.Scanner;

import models.Car;

public class Race {
private static final int MAX_SPEED = 250;
private static final int MIN_SPEED = 0;
private static final int HOURS_IN_DAY = 24;

private final CarConstructor constructor;
private final Scanner scanner;

public Race(CarConstructor constructor) {
this.constructor = constructor;
this.scanner = new Scanner(System.in);
}

public void prepare() {
String name = carName();
int speed = carSpeed();
constructor.addCar(name, speed);
}

private String carName() {
System.out.println(formatMessage("- Введите название машины №%d"));
return scanner.next();
}

private int carSpeed() {
while (true) {
System.out.println(formatMessage("- Введите скорость машины №%d"));
try {
int speed = Integer.parseInt(scanner.next());
if (speed >= MIN_SPEED && speed <= MAX_SPEED) {
return speed;
} else {
System.out.println("- Неправильная скорость.");
}
} catch (NumberFormatException e) {
System.out.println("- Пожалуйста, введите целое число.");
}
}
}

private String formatMessage(String message) {
return String.format(message, constructor.carsSize() + 1);
}

public void getFasterCar() {
Car fasterCar = constructor.getCars().stream()
.max((c1, c2) -> Integer.compare(c1.speed * HOURS_IN_DAY, c2.speed * HOURS_IN_DAY))
.orElse(null);

if (fasterCar != null) {
System.out.printf("- Самая быстрая машина: %s%n", fasterCar.name);
} else {
System.out.println("- Нет машин в списке.");
}
}
}
11 changes: 11 additions & 0 deletions src/main/java/models/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package models;

public class Car {
public String name;
public int speed;

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