Guess my Number

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

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 you need to get references for Math.random and Scanner

 import javax.swing.*;
import java.lang.Math;
import java.util.Scanner; 


You're going to need 4 variables to use for this problem

 int randNum;                //store the random number to be guess    
Scanner input = new Scanner(System.in) //this will get the guess of the user
int guess;               //store the guess of the user
Boolean correct = false;   //this will serve as loop condition until user get the right answer 


To generate a random number between 1 and 10 we will need to use the following code.

 //(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; 


Use the Scanner to get the input of the user. using the method hasNextInt() will check if the user entered a valid number.

 System.out.print("Enter a guess between 1 and 10: "); //get the guess from the user

if(input.hasNextInt()) //ensure that the user entered a number
{
    guess = input.nextInt();  //will stored the number entered by the user

    if(guess == randNum) // to compare if the guessed number is equal to the generated number from Math.random()
    {
        correct = true;  //set correct to true if its equal
        System.out.println("You are correct");
    }
    else
    {
        System.out.println("You are incorrect");
    }
}
else //program will enter this if entered input was not a number
{
    System.out.println("Numbers Only");
    input.next();      
} 
 Enter a guess between 1 and 10: 3
You are incorrect
Enter a guess between 1 and 10: a
Numbers Only
Enter a guess between 1 and 10: 1
You are correct 


Since you do not know when to stop the loop, While Loop is necessary for this. Use the boolean you created to know if the loop needs to stop, in this case if the user guessed the number.

 //loop until correct changes to true
while(correct == false)
{
   //codes
} 

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

Code

Solution Code

Back to the Program-A-Day homepage