## Program: Higher or Lower

Now we’ll write a program similar to the number guessing game in chapter 4. The program will “think” of a number between 1 and 100 and the user (player) will try to guess it; except this time the user will have infinite guesses. If the guess is too low, the program will respond “HIGHER” and if the guess is too high, the program will respond “LOWER”. When the user successfully guesses the number, the program will respond “CORRECT” and end.

```import java.util.Scanner;

public class HigherOrLower1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int guess;

System.out.println("\n--- Guess My Number Game ---");

do {
System.out.print("\nGuess: ");
guess = sc.nextInt();

if (guess < target) {
System.out.println("HIGHER.");
}
else if (guess > target) {
System.out.println("LOWER.");
}
else {
System.out.println("CORRECT. My number was " + target + ".");
}
} while (guess != target);
}
}```

The two important variables here are `target` (line 7) and `guess` (line 8). Variable `target` will hold the target number. Variable `guess` will hold the user’s guess. Starting at the top, line 6 creates a `Scanner`. Line 7 generates a random number from 1 to 100, which goes in variable `target`. Line 8 declares variable `guess`. This variable is undefined at this point because it does not have a value. (Note that variables must be given a value before they are read otherwise you will get an error.) Line 10 prints the title of the game. Lines 12-25 is a do-while loop that will repeat until the user guesses the target number correctly. We can see this from the loop’s condition that says if the user’s guess does not equal the target, it will repeat. Before that, however, line 13 prompts the user for a guess and line 14 obtains it. Lines 16-24 are a three-block if statement. The first block checks if the user’s guess is less than the target number ( `guess < target` ), in which case the user has guessed too low and line 17 prints “HIGHER.” The second block checks if the user’s guess is greater than the target number ( `guess > target` ), in which case the user has guessed too high and line 20 prints “LOWER.” If neither are true then `guess` must equal `target` meaning the user wins and the else block prints “CORRECT. My number was `target`.” As mentioned, line 25 will only repeat the loop is guess does not equal target, resulting in another guess.

```[Run]
--- Guess My Number Game ---
Guess: 82
LOWER.
Guess: 56
LOWER.
Guess: 29
HIGHER.
Guess: 38
HIGHER.
Guess: 47
HIGHER.
Guess: 50
LOWER.
Guess: 49
LOWER.
Guess: 48
CORRECT. My number was 48.```