HELP!
Inner while loop (askAgain) not working properly. I want it so that when the user presses 'y' to start an new game, it will exit inner loop and back out to outer whileloop (keepPlaying) and press 'n' to exit game.
If the user presses neither 'y' or 'n', any other keypressed, it will loop back to: askAgain, until the user made a valid choice.
The program is not working as expected. Please help.
import java.util.Random;
import java.util.Scanner;
public class Game {
private int playerGuess;
private boolean keepPlaying = true;
private boolean askAgain = true;
Random randomNumber;
int generatedYear;
int generatedMonth;
int generatedDay;
/**
*
*/
public Date getRandomDate() {
randomNumber = new Random();
generatedYear = randomNumber.nextInt(600) + 1600;
generatedMonth = randomNumber.nextInt(12) + 1;
generatedDay = randomNumber.nextInt(31) + 1;
Date generatedDate = new Date (generatedYear, generatedMonth, generatedDay);
return generatedDate;
}
/**
*
*/
public void guessTheDate() {
Scanner userInput = new Scanner(System.in);
while(keepPlaying) {
int ranDateYear= getRandomDate().getYear();
System.out.println("New Game!!");
System.out.println();
System.out.print("Please guess the year. (0 - 2199): ");
while(userInput.hasNext()) {
if(userInput.hasNextInt()) {
playerGuess = userInput.nextInt();
if(playerGuess > ranDateYear) {
System.out.println("Out of bounds, too high: " + playerGuess + " (Randomized Number: " + ranDateYear+ ")");
System.out.println();
System.out.println("Try again!");
System.out.print("Please guess the year (0 - 2199): ");
}else if(playerGuess < ranDateYear) {
System.out.println("Out of bounds, too low: " + playerGuess + " (Randomized Number: " + ranDateYear + ")");
System.out.println();
System.out.println("Try again!");
System.out.print("Please guess the year (0 - 2199): ");
}else{
if (playerGuess == ranDateYear) {
System.out.println("Correct! It is a match: " + playerGuess + " (Randomized Number: " + ranDateYear + ")");
System.out.println();
System.out.print("Play again? (Y/N): ");
while (askAgain) {
while (userInput.hasNext()) {
if (userInput.hasNext()) {
String input = userInput.next();
if (input.equalsIgnoreCase("y")) {
keepPlaying = true;
} else if (input.equalsIgnoreCase("n")){
keepPlaying = false;
} else {
askAgain = true;
}
break;
}
}
}
}
}
} else {
System.out.println("Invalid input, not a number.");
System.out.print("Enter another number: ");
userInput.next();
}
}
}
System.out.println("The end. Thank you for playing!");
}
}