Left Right Guess

import java.util.Random;
import java.util.Scanner;

public class Guess {

    public static void main(String[] args) {
        try (Scanner scan = new Scanner(System.in)) {
            Random rand = new Random();
            System.out.println("------------------šŸŽÆ Welcome to the Guessing Game!-----------------");
            while (true) {
                int target = rand.nextInt(101) - 50;
                //also can express as below:
                //method2
                // int target = (int) (Math.random()*101) - 50;
                //method3
                //import java.util.concurrent.ThreadLocalRandom;
                // int target = ThreadLocalRandom.current.nextInt(-50,51);
                int guessCount = 0;
                while (true) {
                    System.out.print("Please enter an integer between -50 and 50 or type 'bye' to quit: ");
                    String input = scan.nextLine().trim();

                    if (input.matches("(?i).*bye.*")) {
                        System.out.println("Goodbye.");
                        return;
                    }
                    try {
                        int guess = Integer.parseInt(input);
                        guessCount++;

                        if (guess < -50 || guess > 50) {
                            System.out.println("ā— Try #" + guessCount + ": Number must be in range [-50, 50].");
                        } else if (guess > target) {
                            System.out.println("ā¬…ļø  Try #" + guessCount + ": Target number is on the left.");
                        } else if (guess < target) {
                            System.out.println("āž”ļø  Try #" + guessCount + ": Target number is on the right.");
                        } else {
                            System.out.println("āœ… Congratulations! You guessed it.");
                            System.out.println("šŸŽÆ The correct number is: " + target);
                            System.out.println("šŸ“Š Total guesses: " + guessCount + (guessCount == 1 ? " time." : " times."));
                            break;
                        }
                    } catch (NumberFormatException e) {
                        System.out.println("āŒ Invalid input.");
                    }
                }

                while (true) {
                    System.out.print("šŸ” Do you want to play again? (y/n): ");
                    String again = scan.nextLine().trim().toLowerCase();
                    switch (again) {
                        case "y" -> {
                            System.out.println("\nšŸ”„ Starting a new round...\n");
                            break;
                        }
                        case "n" -> {
                            System.out.println("šŸ‘‹ Thanks for playing. Goodbye!");
                            return;
                        }
                        default ->
                            System.out.println("ā— Invalid input.");
                    }
                }
            }
        }
    }
}
Scroll to Top