Guess my Number

From CompSciWiki
Revision as of 12:27, 3 December 2011 by RalviV (Talk | contribs)

Jump to: navigation, search

Back to the Program-A-Day homepage

Problem

Generate a program where the computer chooses a random number between 1 and 10 and the user is continuously asked to guess it until they are correct. Use the following guidelines in coming up with a solution:

  • Scanner to use for input
  • Math.random() for generating the random number
  • While loop for continuously asking for a guess until right
  • Boolean variable for indicating when the while loop is done
 

While and For Loops

Wiki loops03.jpg

Solution

To begin (after import javax.swing.*; and import java.util.Scanner;) we're going to need 4 variables; int randNum, Scanner guess, Boolean correct.

 int randNum; //used to store the randNum we generate
Scanner guess = new Scanner(System.in); //used to store the guess
boolean correct = false; //loop variable initialized to false meaning our guess is incorrect 


To generate a random number between 1 and 10 we will need to use the following code.
Note: Math methods do not require an import statement.

 //(int)(Math.random() * 10 generates a random number from 0 to 9
//to get a random number from 1 to 10 we need to add 1
randNum = (int)(Math.random() * 10) + 1; 


To get a guess from the user we will need to prompt them using JOptionPane then convert it to an int. We will assume valid input from the user. After we check the guess we will print out a message indicating if the user is correct.

//get the guess from the user
guess = JOptionPane.showInputDialog("Enter a guess between 1 and 10:");
//ensure that the user entered something
if(guess != null)
{
    //parse the guess into an integer and compare it to the randNum
    //then print out a corresponding message
    if(Integer.parseInt(guess) == randNum)
    {
        //set correct to true so that we can exit the while loop
        correct = true;
        JOptionPane.showMessageDialog(null, "You are correct", "", JOptionPane.INFORMATION_MESSAGE);
    }
    else
    {
        JOptionPane.showMessageDialog(null, "You are incorrect", "", JOptionPane.INFORMATION_MESSAGE);
    }
}

To continuously ask the user for a guess till correct, we can put the previous code inside of a while loop.

//loop until correct changes to true
while(correct == false)
{
    //get the guess from the user
    guess = JOptionPane.showInputDialog("Enter a guess between 1 and 10:");
    //ensure that the user entered something
    if(guess != null)
    {
        //parse the guess into an integer and compare it to the randNum
        //then print out a corresponding message
        if(Integer.parseInt(guess) == randNum)
        {
            //set correct to true so that we can exit the while loop
            correct = true;
            JOptionPane.showMessageDialog(null, "You are correct", "", JOptionPane.INFORMATION_MESSAGE);
        }
        else
        {
            JOptionPane.showMessageDialog(null, "You are incorrect", "", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}

For the final solution code you can look under the code heading.

Code

Solution Code

Back to the Program-A-Day homepage