From 3ed906098c0c6a58454502ddac244bc2fdaa8e3e Mon Sep 17 00:00:00 2001 From: Fanis Date: Wed, 6 Aug 2025 15:56:48 +0300 Subject: [PATCH 1/2] Add solution for final sprint 2. --- src/main/java/Car.java | 8 ++++++++ src/main/java/Main.java | 35 +++++++++++++++++++++++++++++++++-- src/main/java/Race.java | 13 +++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Car.java create mode 100644 src/main/java/Race.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 000000000..0cbc6e6fe --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,8 @@ +public class Car { + public Car(String name, int speed) { + this.name = name; + this.speed = speed; + } + String name = ""; + int speed = 0; +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index db9356a08..2f8e1fc1e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,6 +1,37 @@ +import java.util.Scanner; public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println("Let's race!\nEnter 3 racer names and their speeds:"); + Scanner scanner = new Scanner(System.in); + Race race = new Race(); + boolean pass; + for (int i=1; i<=3; i++) { + pass = false; + while(!pass) { + System.out.println("Enter name of racer #" + i + ":"); + String name = scanner.nextLine(); + if(name.isEmpty()) { + System.out.println("Empty name! Please, try again."); + continue; + } + while(!pass) { + System.out.println("Enter speed of racer #" + i + ":"); + double inputSpeed = scanner.nextDouble(); + scanner.nextLine(); + int speed = (int) inputSpeed; + if ((double) speed != inputSpeed || speed < 0 || speed> 250) { + System.out.println("Invalid speed! Please, try again."); + continue; + } + Car car = new Car(name, speed); + race.updateLeader(car); + pass = true; + } + } + } + System.out.println("The winner is: " + race.leader); + scanner.close(); + System.out.println("See you next time!"); } -} \ No newline at end of file +} diff --git a/src/main/java/Race.java b/src/main/java/Race.java new file mode 100644 index 000000000..3ddfebb84 --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,13 @@ +public class Race { + String leader = ""; + int bestDistance = 0; + + public void updateLeader(Car newRacer) { + int distance = 24 * newRacer.speed; + //NOTE: The winner will be the first who passed equivalent distances + if (distance> this.bestDistance) { + this.leader = newRacer.name; + this.bestDistance = distance; + } + } +} \ No newline at end of file From ef6a6227b3d339914ef701628c57402f203a63f4 Mon Sep 17 00:00:00 2001 From: Fanis Date: Wed, 6 Aug 2025 16:42:58 +0300 Subject: [PATCH 2/2] Fix after Rev.1 of final sprint 2. --- src/main/java/Car.java | 4 ++-- src/main/java/Main.java | 36 +++++++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 0cbc6e6fe..45a4fc5de 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,8 +1,8 @@ public class Car { + final String name; + final int speed; public Car(String name, int speed) { this.name = name; this.speed = speed; } - String name = ""; - int speed = 0; } \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 2f8e1fc1e..3ee7f642b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,7 +1,13 @@ +import java.util.InputMismatchException; import java.util.Scanner; public class Main { + public static final int MAX_SPEED = 250; + public static final int MIN_SPEED = 0; + public static void main(String[] args) { + + System.out.println("Let's race!\nEnter 3 racer names and their speeds:"); Scanner scanner = new Scanner(System.in); Race race = new Race(); @@ -10,17 +16,20 @@ public static void main(String[] args) { pass = false; while(!pass) { System.out.println("Enter name of racer #" + i + ":"); - String name = scanner.nextLine(); - if(name.isEmpty()) { - System.out.println("Empty name! Please, try again."); - continue; - } + String name = readNonEmptyTxt(scanner); while(!pass) { System.out.println("Enter speed of racer #" + i + ":"); - double inputSpeed = scanner.nextDouble(); + double inputSpeed; + try { + inputSpeed = scanner.nextDouble(); + } catch (InputMismatchException e) { + System.out.println("Non-numeric input! Please, try again."); + scanner.nextLine(); + continue; + } scanner.nextLine(); int speed = (int) inputSpeed; - if ((double) speed != inputSpeed || speed < 0 || speed> 250) { + if ((double) speed != inputSpeed || speed < MIN_SPEED || speed> MAX_SPEED) { System.out.println("Invalid speed! Please, try again."); continue; } @@ -34,4 +43,17 @@ public static void main(String[] args) { scanner.close(); System.out.println("See you next time!"); } + + public static String readNonEmptyTxt(Scanner scanner) { + String txt; + while(true) { + txt = scanner.nextLine(); + if(txt.isEmpty()) { + System.out.println("Empty input! Please, try again."); + } else { + break; + } + } + return txt; + } }

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