## Java || Random Number Guessing Game Using Random & Do/While Loop

This is a simple guessing game, which demonstrates the use of the “Random” class to generate random numbers. This program first prompts the user to enter a number between 1 and 1000. Using if/else statements, the program will check to see if the user obtained number is higher/lower than the pre defined random number which is generated by the program. If the user makes a wrong guess, the program will re prompt the user to enter in a new number, where they will have a chance to enter in a new guess. Once the user finally guesses the correct answer, using a do/while loop, the program will ask if they want to play again. If the user selects yes, the game will start over, and a new random number will be generated. If the user selects no, the game will end.

REQUIRED KNOWLEDGE FOR THIS PROGRAM

```The "Random" Class Do/While Loop How To get Character Input Custom Setw/Setfill In Java ```

``` I'm Thinking of a Number Between 1 and 1000... Java // ============================================================================ // Author: Kenneth Perkins // Date: Nov 19, 2012 // Taken From: http://programmingnotes.org/ // File: GuessingGame.java // Description: Demonstrates a simple random number guessing game // ============================================================================ import java.util.*; public class GuessingGame { // global variable declarations static Scanner cin = new Scanner(System.in); static Random rand = new Random(); // this is the call to the "Random" class public static void main(String[] args) { // declare & initialize variables char playAgain = 'y'; int userInput = 0; int numGuesses = 0; int randomNumber = rand.nextInt(1000)+1; // ^ get a number from the random generator in the range of 1 - 1000 System.out.println("Welcome to My Programming Notes' Java Program.\n"); // display directions to user System.out.println("I'm thinking of a number between 1 and 1000. Go " + "ahead and make your first guess.\n"); do { // this is the start of the do/while loop System.out.print(">> "); // get data from user userInput = cin.nextInt(); System.out.println(""); // increments the 'numGuesses' variable each time the user // gets the guess wrong ++numGuesses; // if user guess is too high, do this code if (userInput > randomNumber) { System.out.println("Too high! Think lower."); } // if user guess is too low, do this code else if (userInput < randomNumber) { System.out.println("Too low! Think higher."); } // if user guess is correct, do this code else { // display data to user, prompt if user wants to play again System.out.print("You got it, and it only took you " +numGuesses+" trys!\nWould you like to play again (y/n)? "); playAgain = cin.next().charAt(0); // if user wants to play again then re initialize the variables if (playAgain == 'y'|| playAgain == 'Y') { // creates a line seperator if user wants to enter new data System.out.println(""); setwRF("", 60, '-'); numGuesses = 0; System.out.println("\n\nMake a guess (between 1-1000):\n"); // generate a new random number for the user to try & guess randomNumber = rand.nextInt(1000)+1; } } System.out.println(""); } while (playAgain == 'y' || playAgain == 'Y'); // ^ do/while loop ends when user doesnt select 'Y' // display data to user System.out.println("Thanks for playing!!"); }// end of main public static void setwRF(String str, int width, char fill) { System.out.print(str); for (int x = str.length(); x < width; ++x) { System.out.print(fill); } }// end of setwRF }// http://programmingnotes.org/ 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 // ============================================================================//    Author: Kenneth Perkins//    Date:   Nov 19, 2012//    Taken From: http://programmingnotes.org///    File:  GuessingGame.java//    Description: Demonstrates a simple random number guessing game// ============================================================================import java.util.*; public class GuessingGame{    // global variable declarations    static Scanner cin = new Scanner(System.in);    static Random rand = new Random(); // this is the call to the "Random" class     public static void main(String[] args)    {        // declare & initialize variables        char playAgain = 'y';        int userInput = 0;        int numGuesses = 0;        int randomNumber = rand.nextInt(1000)+1;        // ^ get a number from the random generator in the range of 1 - 1000         System.out.println("Welcome to My Programming Notes' Java Program.\n");         // display directions to user        System.out.println("I'm thinking of a number between 1 and 1000. Go " +                "ahead and make your first guess.\n");         do { // this is the start of the do/while loop             System.out.print(">> ");            // get data from user            userInput = cin.nextInt();            System.out.println("");             // increments the 'numGuesses' variable each time the user            // gets the guess wrong            ++numGuesses;             // if user guess is too high, do this code            if (userInput > randomNumber)            {                System.out.println("Too high! Think lower.");            }             // if user guess is too low, do this code            else if (userInput < randomNumber)            {                System.out.println("Too low! Think higher.");            }             // if user guess is correct, do this code            else            {    // display data to user, prompt if user wants to play again                System.out.print("You got it, and it only took you "                    +numGuesses+" trys!\nWould you like to play again (y/n)? ");                playAgain = cin.next().charAt(0);                 // if user wants to play again then re initialize the variables                if (playAgain == 'y'|| playAgain == 'Y')                {                    // creates a line seperator if user wants to enter new data                    System.out.println("");                    setwRF("", 60, '-');                     numGuesses = 0;                    System.out.println("\n\nMake a guess (between 1-1000):\n");                    // generate a new random number for the user to try & guess                    randomNumber = rand.nextInt(1000)+1;                }            }            System.out.println("");        } while (playAgain == 'y' || playAgain == 'Y');        // ^ do/while loop ends when user doesnt select 'Y'        // display data to user        System.out.println("Thanks for playing!!");    }// end of main     public static void setwRF(String str, int width, char fill)    {        System.out.print(str);        for (int x = str.length(); x < width; ++x)        {            System.out.print(fill);        }    }// end of setwRF}// http://programmingnotes.org/ ```

QUICK NOTES:
The highlighted lines are sections of interest to look out for.

The code is heavily commented, so no further insight is necessary. If you have any questions, feel free to leave a comment below.

Once compiled, you should get this as your output:

`Welcome to My Programming Notes' Java Program.`

``` I'm thinking of a number between 1 and 1000. Go ahead and make your first guess. >> 900 Too high! Think lower. >> 300 Too high! Think lower. >> 100 Too low! Think higher. >> 200 Too low! Think higher. >> 350 You got it, and it only took you 5 trys! Would you like to play again (y/n)? y ------------------------------------------------------------ Make a guess (between 1-1000): >> 300 Too low! Think higher. >> 600 Too high! Think lower. >> 500 Too high! Think lower. >> 400 You got it, and it only took you 4 trys! Would you like to play again (y/n)? n ```

`Thanks for playing!!`