/************************************************************************************************** * Program Name: Programming Project 4.8: Hi-Lo Game * Author: Terry Weiss * Date Written: September 26, 2015 * Program Description: * Design and implement an application that plays the Hi-Lo guessing game with numbers. The * program should pick a random number between 1 and 100 (inclusive) and then repeatedly prompt * the user to guess the number. On each guess, report to the user that he or she is correct or * that the guess is high or low. Continue accepting guesses until the user guesses correctly or * chooses to quit. Use a sentinel value to determine whether the user wants to quit. Count the * number of guesses, and report that value when the user guesses correctly. At the end of each * game (by quitting or a correct guess), prompt to determine whether the user wants to play * again. Continue playing games until the user chooses to stop. When the user stops playing, tell * them how many games they've played. **************************************************************************************************/ import java.util.Scanner; public class HiLoGame { public static boolean userQuit( String str ) { return (str.equals("q") || str.equals("quit")); } public static void main( String[] args ) { final int MIN_NUMBER = 1, MAX_NUMBER = 100, INVALID_GUESS = -1; int correctNumber, guessedNumber, guesses, games; String guess, cont; Scanner input = new Scanner(System.in); games = 0; // Loop to keep playing until ready to quit do { correctNumber = MIN_NUMBER + (int)(Math.random() * MAX_NUMBER); // System.out.println("Debug: Current number is: " + correctNumber); guesses = 0; // Loop to keep guessing until correct or quit do { System.out.print("Please enter your guess between " + MIN_NUMBER + " and " + MAX_NUMBER + " (\"q\" to quit): "); guess = input.next(); if (!userQuit(guess)) { try { guessedNumber = Integer.parseInt(guess); if (guessedNumber < MIN_NUMBER || guessedNumber > MAX_NUMBER) { System.out.print("That's not a valid guess. "); } else { if (guessedNumber > correctNumber) { System.out.println("Your guess was too high."); } else if (guessedNumber < correctNumber) { System.out.println("Your guess was too low."); } guesses++; } } catch (NumberFormatException e) { System.out.print("That's not a number! "); guessedNumber = INVALID_GUESS; } } else { guessedNumber = INVALID_GUESS; } } while ((guessedNumber != correctNumber) && !userQuit(guess)); if (guessedNumber == correctNumber) // If it ended because they guessed correctly { String guessStr = (guesses == 1) ? "guess" : "guesses"; System.out.println("Congratulations! " + correctNumber + " is correct. You guessed " + "this in " + guesses + " " + guessStr + "."); } else // Otherwise they quit { System.out.println("The correct answer was " + correctNumber + "."); } games++; System.out.print("Keep playing? "); cont = input.next(); System.out.println(); } while (cont.equals("y") || cont.equals("yes")); String gameStr = (games == 1) ? "game" : "games"; System.out.println("Thanks for playing! You played " + games + " " + gameStr + "."); } }