public class NumberGuessGame
1: //NumberGuessGame.java
3: import java.util.Scanner;
5: public class NumberGuessGame
6: {
7: public static void guessNumber(int lowVal, int highVal, Scanner scnr)
8: {
9: int midVal; // Midpoint of low..high
10: char userAnswer; // User response
12: midVal = (highVal + lowVal) / 2;
14: // Prompt user for input
15: System.out.print("Is it " + midVal + "? (l/h/y): ");
16: userAnswer = scnr.next().charAt(0);
18: if ((userAnswer != 'l') && (userAnswer != 'h'))
19: {
20: System.out.println("Thank you!"); // Base case: found number;
21: }
22: else // Recursive case: split into lower OR upper half
23: {
24: if (userAnswer == 'l') // Guess in lower half
25: {
26: guessNumber(lowVal, midVal, scnr); // Recursive call
27: }
28: else // Guess in upper half
29: {
30: guessNumber(midVal + 1, highVal, scnr); // Recursive call
31: }
32: }
33: }
35: public static void main(String[] args)
36: {
37: Scanner scnr = new Scanner(System.in);
39: // Print game objective, user input commands
40: System.out.println("Choose a number from 0 to 100.");
41: System.out.println("Answer with:");
42: System.out.println(" l (your num is lower)");
43: System.out.println(" h (your num is higher)");
44: System.out.println(" any other key (guess is right).");
46: // Call recursive function to guess number
47: guessNumber(0, 100, scnr);
48: }
49: }