Difference between revisions of "Guess my Number"

From CompSciWiki
Jump to: navigation, search
 
 
(23 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{1010PrAD|ProblemName=Guess my Number
 
{{1010PrAD|ProblemName=Guess my Number
  
|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.
+
|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:
 +
* [[Input using Scanner|Scanner]] to use for input
 +
* [[Math Methods|Math.random()]] for generating the random number
 +
* [[While Loops|While loop]] for continuously asking for a guess until right
 +
* [[Common_Primitive_Variables#Primitive_Type_boolean|Boolean]] variable for indicating when the while loop is done
  
 +
|SideSectionTitle=While and For Loops
  
 
|SideSection=
 
|SideSection=
[[Image:OperatingSystemExample.jpg|float|267px]]
+
[[Image:Wiki_loops03.jpg|center]]<BR>
<BR>
+
Taken from http://www.flickr.com/photos/daniello/565304023/
+
  
An image or By Students section
+
|Solution=To begin you need to get references for Math.random and Scanner
 +
{{CodeBlock
 +
|Code=
 +
import javax.swing.*;
 +
import java.lang.Math;
 +
import java.util.Scanner;
 +
}}
  
|Solution=To get a random number in java you need to include <bold>import java.util.Random;</bold>
 
  
<pre>
+
You're going to need 4 variables to use for this problem
Random generator = new Random();
+
{{CodeBlock
int randNum = generator.nextInt(6) + 1;
+
|Code=
boolean correct = false;
+
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
 +
}}
  
while(correct == false)
+
 
 +
To generate a random number between 1 and 10 we will need to use the following code.
 +
{{CodeBlock
 +
|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.
 +
{{CodeBlock
 +
|Code=
 +
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");
 +
    }
 
}
 
}
</pre>
+
else //program will enter this if entered input was not a number
 +
{
 +
    System.out.println("Numbers Only");
 +
    input.next();     
 +
}
 +
}}
  
 +
{{OutputBlock
 +
|Code=
 +
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 Loops|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.
 +
{{CodeBlock
 +
|Code=
 +
//loop until correct changes to true
 +
while(correct == false)
 +
{
 +
  //codes
 +
}
 +
}}
 +
 +
For the final solution code you can look under the code heading.
 +
 +
|SolutionCode=import java.lang.Math; //needed for Math.random
 +
import java.util.Scanner;
 +
 +
public class GuessMyNumber
 +
{
 +
    public static void main(String [ ] args)
 +
    {
 +
        int randNum; //used to store the randNum we generate
 +
        Scanner input = new Scanner(System.in); //used to get the guess
 +
        int guess = 0; //use to store the guess
 +
        boolean correct = false; //loop variable initialized to false meaning our guess is incorrect
 +
 +
        //(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;
 +
 +
        while(correct == false)
 +
        {
 +
            //get the guess from the user
 +
            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");
 +
                  }
 +
            }//if
 +
            else //program will enter this if entered input was not a number
 +
            {
 +
                  System.out.println("Numbers Only");
 +
                  input.next();     
 +
            }//else
 +
        }//while
 +
    }//main
 +
}
 
}}
 
}}

Latest revision as of 13:52, 3 December 2011

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