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
|
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
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
}
|
Back to the Program-A-Day homepage