Difference between revisions of "Guess my Number"

From CompSciWiki
Jump to: navigation, search
Line 2: Line 2:
  
 
|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:  
 
|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/Output using JOptionPane|JOptionPane for input and output]]
+
* [[Input using Scanner|Scanner]] to use for input
 
* [[Math Methods|Math.random()]] for generating the random number
 
* [[Math Methods|Math.random()]] for generating the random number
 
* [[While Loops|While loop]] for continuously asking for a guess until right
 
* [[While Loops|While loop]] for continuously asking for a guess until right
Line 12: Line 12:
 
[[Image:Wiki_loops03.jpg|center]]<BR>
 
[[Image:Wiki_loops03.jpg|center]]<BR>
  
|Solution=To begin (after importing javax.swing.*) we're going to need 3 variables; int randNum, String guess, Boolean correct.
+
|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.
<pre>
+
{{CodeBlock
 +
|Code=
 
int randNum; //used to store the randNum we generate
 
int randNum; //used to store the randNum we generate
String guess; //used to store the guess
+
Scanner guess = new Scanner(System.in); //used to store the guess
 
boolean correct = false; //loop variable initialized to false meaning our guess is incorrect
 
boolean correct = false; //loop variable initialized to false meaning our guess is incorrect
</pre>
+
}}
 +
 
 +
 
 
To generate a random number between 1 and 10 we will need to use the following code.
 
To generate a random number between 1 and 10 we will need to use the following code.
 
<br>
 
<br>
Note: Math methods do not require an import statement. <br>
+
Note: Math methods do not require an import statement.<br>
<pre>
+
{{CodeBlock
 +
|Code=
 
//(int)(Math.random() * 10 generates a random number from 0 to 9
 
//(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
 
//to get a random number from 1 to 10 we need to add 1
 
randNum = (int)(Math.random() * 10) + 1;
 
randNum = (int)(Math.random() * 10) + 1;
</pre>
+
}}
 +
 
 +
 
 
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.
 
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.
 
<pre>
 
<pre>

Revision as of 12:27, 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 (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