Difference between revisions of "Guess my Number"
(14 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 | |SideSectionTitle=While and For Loops | ||
|SideSection= | |SideSection= | ||
− | [[Image: | + | [[Image:Wiki_loops03.jpg|center]]<BR> |
− | <BR> | + | |
− | |Solution=To | + | |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; | ||
+ | }} | ||
− | |||
− | + | You're going to need 4 variables to use for this problem | |
− | import java.lang.Math | + | {{CodeBlock |
− | import | + | |Code= |
+ | 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. | ||
+ | {{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"); | ||
+ | } | ||
+ | } | ||
+ | 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 class GuessMyNumber | ||
Line 24: | Line 96: | ||
public static void main(String [ ] args) | public static void main(String [ ] args) | ||
{ | { | ||
− | int randNum = (int)(Math.random() * 10 | + | 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) | while(correct == false) | ||
{ | { | ||
− | guess | + | //get the guess from the user |
− | if( | + | 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
ProblemGenerate 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:
|
While and For Loops | |
---|---|---|
SolutionTo begin you need to get references for Math.random and Scanner import javax.swing.*; import java.lang.Math; import java.util.Scanner;
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
//(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;
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
//loop until correct changes to true while(correct == false) { //codes } For the final solution code you can look under the code heading. | ||
Code |