import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList cars = new ArrayList<>();
Race race = new Race("24 ÑаÑа Ðе-Ðана", 24, 3);
Scanner usrInput = new Scanner(System.in);
System.out.println("ÐобÑо пожаловаÑÑ Ð½Ð° Ð¾Ð´Ð½Ñ Ð¸Ð· ÑамÑÑ
извеÑÑнÑÑ
авÑогонок в миÑе â «" + race.getRaceTitle() + "»!");
System.out.println("ÐÑавила пÑоÑÑÑ:\nÐÑжно пÑидÑмаÑÑ " + race.getNumberOfCars() + " маÑÐ¸Ð½Ñ Ð¸ ÑÑолкнÑÑÑ Ð¸Ñ
в головокÑÑжиÑелÑной " +
race.getRaceTime() + "-ÑаÑовой гонке!");
for (int i = 0; i < race.getNumberOfCars(); i++) {
System.out.println(i + 1 + " маÑина: ");
System.out.print("ÐведиÑе название: ");
String carName = checkUsrNameInput(usrInput, cars);
System.out.print("ÐведиÑе ÑкоÑоÑÑÑ (не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ½ÑÑе 1 и болÑÑе 250 км/Ñ): ");
int carSpeed = checkUsrSpeedInput(usrInput);
Car car = new Car(carName, carSpeed);
cars.add(car);
}
race.setCars(cars); //не знаÑ, пÑавилÑно ÑÑо или неÑ, Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑе бÑло Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð¼Ð°ÑÑив не из клаÑÑа Race, а ÑоÑ, коÑоÑÑй Ñ Ñоздал в main
System.out.println("Ðа наÑнеÑÑÑ Ð³Ð¾Ð½ÐºÐ°!!!");
System.out.println("ÐÑÑÑнÑем победиÑелÑ..");
Car fastestCar = race.calculateFastestCar();
System.out.println("ÐобедиÑелÑ: " + fastestCar.getName() + "!!!");
}
private static String checkUsrNameInput(Scanner usrInput, ArrayList cars) {
boolean isValid = false;
String carName = null;
while (!isValid) {
carName = usrInput.nextLine();
if (carName.trim().isEmpty()) {
System.out.print("ÐÑÑÑÐ°Ñ ÑÑÑока, введиÑе пожалÑйÑÑа название авÑомобилÑ: ");
} else if (isNumeric(carName)) {
System.out.print("Ðазвание не должно ÑоÑÑоÑÑÑ ÑолÑко из ÑиÑÑ, попÑобÑйÑе еÑе Ñаз: ");
} else if (!isSpecialSymbols(carName)) {
System.out.print("Рназвании не должно бÑÑÑ ÑпеÑ-Ñимволов, попÑобÑйÑе еÑе Ñаз: ");
} else if (isCarNamesEquals(cars, carName)) {
System.out.print("ÐаÑина Ñ Ñаким названием Ñже еÑÑÑ, введиÑе дÑÑгое: ");
} else {
isValid = true;
}
}
return carName;
}
private static int checkUsrSpeedInput(Scanner usrInput) {
boolean isValid = false;
int carSpeed = 0;
while (!isValid) {
try {
carSpeed = usrInput.nextInt();
usrInput.nextLine();
if (carSpeed > 0 && carSpeed <= 250) {
isValid = true;
} else {
System.out.print("СкоÑоÑÑÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ½ÑÑе 1 и болÑÑе 250 км/Ñ. ÐопÑобÑйÑе еÑе Ñаз: ");
}
} catch (Exception ex) {
System.out.print("ÐекоÑÑекÑÐ½Ð°Ñ ÑкоÑоÑÑÑ. ÐопÑобÑйÑе еÑе Ñаз: ");
usrInput.nextLine();
}
}
return carSpeed;
}
//Ñ
оÑел ÑделаÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ не ÑоÑÑоÑло ÑолÑко из ÑиÑÑ, но еÑли ввеÑÑи ÑиÑло,
//коÑоÑое не вмеÑÐ°ÐµÑ Ñип long, Ñо пÑовеÑка не ÑÑабаÑÑваеÑ, Ñ
оÑелоÑÑ Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ ÐºÐ°Ðº ÑÑо обойÑи
private static boolean isNumeric(String str) {
try {
Long.parseLong(str);
return true;
} catch (NumberFormatException e) {
return false;
}
}
private static boolean isSpecialSymbols(String str) {
return str.matches("[a-zA-Zа-ÑÐ-Я0-9 ]+");
}
private static boolean isCarNamesEquals(ArrayList cars, String carName) {
boolean isEquals = false;
if (!cars.isEmpty()) {
for (Car car : cars) {
if (car.getName().equals(carName)) {
isEquals = true;
break;
}
}
}
return isEquals;
}
}