Simple Number Guessing Game in Java
Tags: java, webdev, javascript, beginners
Published: 2023-10-27 12:54:34

In the world of programming, games provide a fascinating platform for honing your skills and creating engaging user experiences. 

One such game that offers a perfect blend of fun and learning is the **Number Guessing Game in Java**. 

In this article, we'll take you through the process of building a Number Guessing Game in Java, a versatile and widely-used programming language.

## Number Guessing Game in Java

In this [Number Guessing Game in Java](https://foolishdeveloper.com/number-guessing-game-java/), the computer randomly selects a number, and the player has to guess it. 

The player keeps guessing until they guess the correct number. The program will provide feedback on whether the guess is too high or too low. Here's the code:

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

public class NumberGuessingGame {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();

        int lowerBound = 1; // Set the lower bound of the number range
        int upperBound = 100; // Set the upper bound of the number range
        int secretNumber = random.nextInt(upperBound - lowerBound + 1) + lowerBound;
        int numberOfTries = 0;
        boolean hasGuessedCorrectly = false;

        System.out.println("Welcome to the Number Guessing Game!");
        System.out.println("I've selected a random number between " + lowerBound + " and " + upperBound + ". Try to guess it.");

        while (!hasGuessedCorrectly) {
            System.out.print("Enter your guess: ");
            int userGuess = scanner.nextInt();
            numberOfTries++;

            if (userGuess < lowerBound || userGuess > upperBound) {
                System.out.println("Please guess a number between " + lowerBound + " and " + upperBound + ".");
            } else if (userGuess < secretNumber) {
                System.out.println("Too low. Try again.");
            } else if (userGuess > secretNumber) {
                System.out.println("Too high. Try again.");
            } else {
                hasGuessedCorrectly = true;
                System.out.println("Congratulations! You've guessed the number " + secretNumber + " in " + numberOfTries + " tries.");
            }
        }

        scanner.close();
    }
}

```

**Step by Step Explanation**

Here's an explanation of the code for the **number guessing game in Java**:

**1. Import Statements:**
These statements import necessary classes for handling user input (Scanner) and generating random numbers (Random).

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

**2. Variable Initialization:**

These variables set the lower and upper bounds for the range of numbers that the user can guess. In this example, the range is from 1 to 100.

```java
int lowerBound = 1;
int upperBound = 100;
```
**3. Generating the Secret Number:**
 
This line generates a random number within the specified range using the `Random` class. It ensures that the secret number is within the specified bounds.

```java
int secretNumber = random.nextInt(upperBound - lowerBound + 1) + lowerBound;
```
**4. Game Variables:**
 
`numberOfTries` keeps track of how many attempts the player has made, and `hasGuessedCorrectly` is a boolean variable to determine if the player has guessed the correct number.


```java
int numberOfTries = 0;
boolean hasGuessedCorrectly = false;

```
**5. Welcome Message:**
 
These lines provide a welcoming message and inform the player about the range of numbers to guess from.

```java
System.out.println("Welcome to the Number Guessing Game!");
System.out.println("I've selected a random number between " + lowerBound + " and " + upperBound + ". Try to guess it.");

```
**6. Game Loop:**
  
This while loop runs as long as the player has not guessed the correct number.

```java
while (!hasGuessedCorrectly) {
```
**7. User Input and Guessing Logic:**
 
It reads the user's input as their guess and increments the `numberOfTries` counter.

```java
int userGuess = scanner.nextInt();
numberOfTries++;

```
**8. Checking User Input:**
 

```java
if (userGuess < lowerBound || userGuess > upperBound) {
    System.out.println("Please guess a number between " + lowerBound + " and " + upperBound + ".");
} else if (userGuess < secretNumber) {
    System.out.println("Too low. Try again.");
} else if (userGuess > secretNumber) {
    System.out.println("Too high. Try again.");
} else {
    hasGuessedCorrectly = true;
    System.out.println("Congratulations! You've guessed the number " + secretNumber + " in " + numberOfTries + " tries.");
}

```

- If the user's guess is outside the specified range, it prompts the user to guess within the range.
- If the guess is lower than the secret number, it informs the user that their guess is too low.
- If the guess is higher than the secret number, it informs the user that their guess is too high.
- If the guess matches the secret number, it sets `hasGuessedCorrectly` to `true`, and the game loop ends. It also displays a congratulatory message with the correct number and the number of tries.

**9. Closing the Scanner:**
 
This line closes the `Scanner` object when the game is over.
```java
scanner.close();
```
Overall, this code creates a simple number guessing game where the player needs to guess a random number within a specified range. 

It provides feedback on the player's guesses and counts the number of attempts it took to guess the correct number.

Creating a **Number Guessing Game in Java** is not only a fun and educational project but also a fantastic way to enhance your programming skills.