import java.util.List;
import java.util.Scanner;
import java.util.Random;
/*
// option 1
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean playAgain;
int iteration = 1;
int maxSpeed;
do {
Race race = new Race();
if (iteration == 1) {
maxSpeed = 250;
} else {
maxSpeed = 250 + (new Random().nextInt(51));
}
for (int i = 0; i < 3; i++) {
String name;
int speed = 0;
System.out.print(" - Ââåäèòå íàçâàíèå àâòîìîáèëÿ #" + (i + 1) + ": ");
name = scanner.nextLine();
boolean validInput = false;
while (!validInput) {
System.out.print(" - Ââåäèòå ñêîðîñòü âàøåãî àâòîìîáèëÿ : ");
if(scanner.hasNextInt()) {
speed = scanner.nextInt();
scanner.nextLine();
if (iteration == 1) {
if (speed > 0 && speed <= maxSpeed) {
break;
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà: ");
}
} else {
if (speed >= 250 && speed <= maxSpeed) {
break;
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà: ");
}
}
} else {
System.out.println("Ïîæàëóéñòà, ââåäèòå öåëîå ÷èñëî.");
scanner.nextLine(); // Clear the invalid input
}
}
Car car = new Car(name, speed);
race.addCar(car);
}
List leaders = race.getCurrentLeaders();
if (!leaders.isEmpty()) {
System.out.println("\nÑàìàÿ áûñòðàÿ ìàøèíà: " + String.join(", ", leaders));
}
System.out.print("Õîòèòå ñûãðàòü ñíîâà? (äà/íåò): ");
String response = scanner.nextLine();
playAgain = response.equalsIgnoreCase("äà");
iteration++;
} while (playAgain);
scanner.close();
}
}
// option 2
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean playAgain;
boolean isFirstIteration = true; // Changed to a boolean
int maxSpeed;
do {
Race race = new Race();
// Adjust maxSpeed based on whether it's the first iteration
if (isFirstIteration) {
maxSpeed = 250;
} else {
maxSpeed = 250 + (new Random().nextInt(51));
}
for (int i = 0; i < 3; i++) {
String name;
int speed = 0;
System.out.print(" - Ââåäèòå íàçâàíèå àâòîìîáèëÿ #" + (i + 1) + ": ");
name = scanner.nextLine();
boolean validInput = false;
while (!validInput) {
System.out.print(" - Ââåäèòå ñêîðîñòü âàøåãî àâòîìîáèëÿ : ");
if (scanner.hasNextInt()) {
speed = scanner.nextInt();
scanner.nextLine();
if (isFirstIteration) {
if (speed > 0 && speed <= maxSpeed) {
validInput = true; // Mark the input as valid
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà: ");
}
} else {
if (speed >= 250 && speed <= maxSpeed) {
validInput = true; // Mark the input as valid
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà: ");
}
}
} else {
System.out.println("Ïîæàëóéñòà, ââåäèòå öåëîå ÷èñëî.");
scanner.nextLine(); // Clear the invalid input
}
}
Car car = new Car(name, speed);
race.addCar(car);
}
List leaders = race.getCurrentLeaders();
if (!leaders.isEmpty()) {
System.out.println("\nÑàìàÿ áûñòðàÿ ìàøèíà: " + String.join(", ", leaders));
}
System.out.print("Õîòèòå ñûãðàòü ñíîâà? (äà/íåò): ");
String response = scanner.nextLine();
playAgain = response.equalsIgnoreCase("äà");
isFirstIteration = false; // Set it to false after the first iteration
} while (playAgain);
scanner.close();
}
}
// option 3:
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean playAgain;
boolean isFirstIteration = true; // Changed to a boolean
int maxSpeed;
do {
Race race = new Race();
if (isFirstIteration) {
maxSpeed = 250;
} else {
maxSpeed = 250 + (new Random().nextInt(51));
}
for (int i = 0; i < 3; i++) {
String name;
int enteredSpeed = 0;
int wrongEntries = 0;
System.out.print(" - Ââåäèòå íàçâàíèå àâòîìîáèëÿ #" + (i + 1) + ": ");
name = scanner.nextLine();
boolean validInput = false;
while (!validInput) {
System.out.print(" - Ââåäèòå ñêîðîñòü âàøåãî àâòîìîáèëÿ : ");
if (scanner.hasNextInt()) {
enteredSpeed = scanner.nextInt();
scanner.nextLine(); // Consume the newline
if (isFirstIteration) {
if (enteredSpeed > 0 && enteredSpeed <= maxSpeed) {
validInput = true; // Mark the input as valid
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà: ");
wrongEntries++;
}
} else {
if (enteredSpeed >= 250 && enteredSpeed <= maxSpeed) {
validInput = true;
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà: ");
wrongEntries++;
}
}
} else {
System.out.println("Ïîæàëóéñòà, ââåäèòå öåëîå ÷èñëî.");
scanner.nextLine();
}
}
int finalSpeed = enteredSpeed;
for (int j = 0; j < wrongEntries; j++) {
finalSpeed -= (finalSpeed * 0.1);
}
Car car = new Car(name, (int) finalSpeed);
race.addCar(car);
}
List leaders = race.getCurrentLeaders();
if (!leaders.isEmpty()) {
System.out.println("\nÑàìàÿ áûñòðàÿ ìàøèíà: " + String.join(", ", leaders));
}
System.out.print("Õîòèòå ñûãðàòü ñíîâà? (äà/íåò): ");
String response = scanner.nextLine();
playAgain = response.equalsIgnoreCase("äà");
isFirstIteration = false;
} while (playAgain);
scanner.close();
}
}
*/
// option 3
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean playAgain;
boolean isFirstIteration = true; // Changed to a boolean
int maxSpeed;
do {
Race race = new Race();
StringBuilder results = new StringBuilder(); // To hold results and finalized speeds
if (isFirstIteration) {
maxSpeed = 250;
} else {
maxSpeed = 250 + (new Random().nextInt(51));
}
// Loop to collect details for 3 cars
for (int i = 0; i < 3; i++) {
String name;
int enteredSpeed = 0;
int wrongEntries = 0;
// ? ÍÅ ÄÀ¨Ì ÂÂÅÑÒÈ ÏÓÑÒÎÅ ÍÀÇÂÀÍÈÅ
do {
System.out.print(" - Ââåäèòå íàçâàíèå àâòîìîáèëÿ #" + (i + 1) + ": ");
name = scanner.nextLine().trim();
if (name.isEmpty()) {
System.out.println("Íàçâàíèå íå ìîæåò áûòü ïóñòûì. Ïîïðîáóéòå ñíîâà.");
}
} while (name.isEmpty());
boolean validInput = false;
// Input for speed with validation // ââîä ñêîðîñòè ñ ñóùåñòâóþùåé ïðîâåðêîé
while (!validInput) {
System.out.print(" - Ââåäèòå ñêîðîñòü âàøåãî àâòîìîáèëÿ: ");
if (scanner.hasNextInt()) {
enteredSpeed = scanner.nextInt();
scanner.nextLine(); // Consume the newline // ñúåäàåì ïåðåâîä ñòðîêè
// Validate the speed based on the current iteration
if (isFirstIteration) {
if (enteredSpeed > 0 && enteredSpeed <= maxSpeed) {
validInput = true; // Mark the input as valid
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà.");
wrongEntries++;
}
} else {
if (enteredSpeed >= 250 && enteredSpeed <= maxSpeed) {
validInput = true; // Mark the input as valid
} else {
System.out.println(" Íåïðàâèëüíàÿ ñêîðîñòü, ïîïðîáóéòå ñíîâà.");
wrongEntries++;
}
}
} else {
System.out.println("Ïîæàëóéñòà, ââåäèòå öåëîå ÷èñëî.");
scanner.nextLine(); // Consume the invalid input
}
}
// Calculate the final speed based on wrong attempts
double finalSpeed = enteredSpeed;
for (int j = 0; j < wrongEntries; j++) {
finalSpeed -= (finalSpeed * 0.1); // Reduce speed by 10% for each wrong entry
}
// Create a car with the final speed
Car car = new Car(name, (int) finalSpeed);
race.addCar(car);
// Append the details to the results StringBuilder
results.append(" Àâòîìîáèëü: ").append(name)
.append(", Ââåäåííàÿ ñêîðîñòü: ").append(enteredSpeed)
.append(", Êîëè÷åñòâî íåïðàâèëüíûõ ïîïûòîê: ").append(wrongEntries)
.append(", Êîíå÷íàÿ ñêîðîñòü: ").append((int) finalSpeed).append("\n");
}
// Find and display the current leaders after entries for all cars
List leaders = race.getCurrentLeaders();
if (!leaders.isEmpty()) {
System.out.println("\nÑàìàÿ áûñòðàÿ ìàøèíà: " + String.join(", ", leaders));
}
// Display all input details after all cars have been entered
System.out.println(results);
// Ask the user if they want to play again
System.out.print("Õîòèòå ñûãðàòü ñíîâà? (äà/íåò): ");
String response = scanner.nextLine();
playAgain = response.equalsIgnoreCase("äà");
isFirstIteration = false;
} while (playAgain);
scanner.close();
}
}