Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

HomeWork #1 #157

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
nordpage wants to merge 1 commit into Yandex-Practicum:master
base: master
Choose a base branch
Loading
from nordpage:master
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
View file Open in desktop
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
View file Open in desktop
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
View file Open in desktop
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("- Введите название машины No%d"));
return scanner.next();
}

private int carSpeed() {
while (true) {
System.out.println(formatMessage("- Введите скорость машины No%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
View file Open in desktop
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;
}
}

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