Source of NumberGuessGame.java


  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: }