Results 1 to 17 of 17
- 07-27-2011, 07:13 PM #1
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
Having difficulty executing a series of loops in program
I started learning programming about a month ago and am writing a MasterMind program which allows the user to guess a 3-digit, randomly-generated number. I believe I've figured out most of the program, but am stuck on the final aspect of the program's logic.
For each guess, I want to first check if the solution is correct; if so, then the program should ask the user if he or she wants to play again. If a guess is incorrect, the program should display the number of correctly-positioned digits in his or her guess and the sum of those same correctly-positioned digits. It should then allow them to continue guessing until they have reached the maximum number of allowed guesses, which are predetermined according to their selected difficulty level.
Java Code:import java.util.Scanner; import java.lang.Math; /** Import the Scanner and Math classes from the Java library.*/ public class MasterMind { public static void main(String[] args) { int user_guesses, max_guesses, game_level, guess; double balance = 0.0, bet; final double min_bet = 2.0; String guessString; Scanner keyboard = new Scanner(System.in); int numCorrect = 0; // number of digits guessed correctly int incorrect = 0; // number of incorrect guesses int sessionSum = 0; // sum of correctly positioned guesses per session System.out.print("\nWould you like to play Mastermind (y/n)? "); String user_response = keyboard.nextLine(); // User is prompted to declare whether he or she wishes to play // the MasterMind game. if( user_response.toLowerCase().charAt(0) == 'y' ) { System.out.print("\nEnter the amount of money you currently have: "); balance = keyboard.nextDouble(); // If the users input String, after being converted to lower case, is // equal to "yes", then the user is asked to input his or her current // balance. Program reads the next Double from the user's keyboard. // This input, if valid, is assigned to var "balance". while ( balance < 2.00 ) { System.out.println("\nSorry, you must have at least 2.00 dollars to play MasterMind.\nGoodbye.\n"); System.exit(0); } /** Error-checking while loop handles invalid input for the balance variable.*/ // MasterMind requires a $2.00 minimum balance. If the user enters a balance less // than the minimum, a message is displayed to the user to alert him or her of // this requirement; subsequently, the program exits. } // Ends if loop. else { System.out.println("\nGoodbye, see you next time."); System.exit(0); } // If the user enters indicates he or she doesn't want // to play, the program displays the above and exits. // NOTE: consider replacing with isEqual for String input "yes" | "no" while( user_response.toLowerCase().charAt(0) == 'y') { System.out.print("\nPlease enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: "); while (true) { game_level = keyboard.nextInt(); if (game_level == 1 || game_level == 2 || game_level == 3) break; System.out.println("\nSorry, but entry is invalid."); System.out.print("Please enter valid difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: "); } /** Receive user's difficulty level using error-checking while loop.*/ // Program receives using user input via the "nextInt()" // method (from the "Scanner" class). If this input is // equal to 1, 2, or 3, the program breaks from the loop; // otherwise, the program loops and prompts the user to // enter a valid integer. System.out.print("\nEnter the amount you want to bet: "); while (true) { bet = keyboard.nextDouble(); if (bet <= balance) break; System.out.println("\nSorry, but you cannot bet more money than you have."); System.out.print("Enter the amount you want to bet: "); } /** Receive user's bet using error-checking while loop.*/ // Program receives using user input via the "nextInt()" // method (from the "Scanner" class). If this input is // equal to 1, 2, or 3, the program breaks from the loop; // otherwise, the program loops and prompts the user to // enter a valid integer. int random = randomNumber(game_level); // uses method randomNumber String randomString = String.valueOf(random); int secretCodeDigits = String.valueOf(random).length(); // calc length int r1 = random / 100; // hundred's place int r2 = random % 100 / 10; // ten's place int r3 = random % 100 % 10 / 1; // one's place System.out.println("\n< CHEAT MODE IS ENABLED. > The answer is: " + random +"."); // ad hoc CHEAT MODE System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); int g1 = guess / 100; // hundred's digit int g2 = guess % 100 / 10; // ten's digit int g3 = guess % 100 % 10 / 1; // one's digit System.out.println(g1 + g2 + g3 + " is your guess."); // checkpoint max_guesses = gameGuesses(game_level); user_guesses = 0; int guessesRem = max_guesses; // number of guesses user has left while( user_guesses < max_guesses ) { if ((r1 == g1) & (r2 == g2) & (r3 == g3)) { System.out.println("You won!!!"); System.out.println("You had " + incorrect + "wrong guesses."); System.out.println("You earned: "); System.out.println("Your balance is now x dollars."); } else if ((r1 == g1) & (r2 == g2)) { numCorrect = 2; sessionSum = r1 + r2; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } else if ((r1 == g1) & (r3 == g3)) { numCorrect = 2; sessionSum = r1 + r3; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } else if ((r2 == g2) & (r3 == g3)) { numCorrect = 2; sessionSum = r2 + r3; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } else if (r1 == g1) { numCorrect = 1; sessionSum = r1; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } else if (r2 == g2) { numCorrect = 1; sessionSum = r2; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } else if (r3 == g3) { numCorrect = 1; sessionSum = r3; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } else { numCorrect = 0; sessionSum = 0; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); } } } System.out.println("You have won: " + balance); } // ++++ E N D M A I N +++++ /* gameGuesses method assigns the maximum number of guesses permitted according to the user's chosen level of difficulty. */ public static int gameGuesses( int game_level ) { switch( game_level ){ case 1: return 30; case 2: return 20; case 3: return 10; } return 0; // else return 0 } /* randomNumber method generates random number */ public static int randomNumber(int game_level) { int secretCode; if( game_level == 1 || game_level == 2 || game_level == 3) { secretCode = (int)( Math.random() * 900 ) + 100; return secretCode; } // If the game_level input is valid (i.e., 1, 2, or 3), // multiply that input by the product of a randomly- // generated number and 900, and add 100 to its result. // Lastly, assign this number to the var "secretCode" // and return to program. return 0; // else return 0 } }
Java Code:Would you like to play Mastermind (y/n)? y Enter the amount of money you currently have: 55 Please enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: 3 Enter the amount you want to bet: 55 < CHEAT MODE IS ENABLED. > The answer is: 499. Please guess the 3-digit number: 433 10 is your guess. You have 9 guesses reamining. Number of correct digits: 1 Sum: 4 Please guess the 3-digit number: 493 You have 8 guesses reamining. Number of correct digits: 1 Sum: 4 Please guess the 3-digit number: 499 You have 7 guesses reamining. Number of correct digits: 1 Sum: 4
Last edited by serenityN0W; 07-27-2011 at 10:41 PM.
- 07-27-2011, 07:44 PM #2it works all the way through the first incorrect guess...
Have you tried debugging your code by adding println statements to show the values of variables as they change and to show the execution flow.
What variable controls the continuation of the execution? Print it out every time it changes:
System.out.println("var=" + var);
- 07-27-2011, 08:06 PM #3
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
I have to run out for a bit, but I'll answer your first question for now...
It seems that theJava Code:while( user_guesses < max_guesses )
I believe the problem lies somewhere in the combination of loops, but can't seem to figure out where I've gone wrong.
- 07-27-2011, 08:38 PM #4while( user_guesses < max_guesses )loop works fine, but only once.
Either the condition becomes false. ==> add a println to print those values just before the end of the while loop
Or there is a break that exits ==> Add a println saying that it's breaking out of the loop
Or there is an exception that throws you out. Use try{} catch() and printStackTrace to see
- 07-27-2011, 10:39 PM #5
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
Thanks, Norm. I'll report back once I've had a chance to try your suggestions.
- 07-28-2011, 03:57 AM #6
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
I modified my code so that the print statements are just before the end of the while loop. But I'm still running into the same problem:
Java Code:while( user_guesses < max_guesses ) { if ((r1 == g1) & (r2 == g2) & (r3 == g3)) { System.out.println("You won!!!"); System.out.println("You had " + incorrect + "wrong guesses."); System.out.println("You earned: "); System.out.println("Your balance is now x dollars."); break; } else if ((r1 == g1) & (r2 == g2)) { numCorrect = 2; sessionSum = r1 + r2; user_guesses++; guessesRem--; incorrect++; } else if ((r1 == g1) & (r3 == g3)) { numCorrect = 2; sessionSum = r1 + r3; user_guesses++; guessesRem--; incorrect++; } else if ((r2 == g2) & (r3 == g3)) { numCorrect = 2; sessionSum = r2 + r3; user_guesses++; guessesRem--; incorrect++; } else if (r1 == g1) { numCorrect = 1; sessionSum = r1; user_guesses++; guessesRem--; incorrect++; } else if (r2 == g2) { numCorrect = 1; sessionSum = r2; user_guesses++; guessesRem--; incorrect++; } else if (r3 == g3) { numCorrect = 1; sessionSum = r3; user_guesses++; guessesRem--; incorrect++; } else { numCorrect = 0; sessionSum = 0; user_guesses++; guessesRem--; incorrect++; } System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); }
Java Code:Would you like to play Mastermind (y/n)? y Enter the amount of money you currently have: 55 Please enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: 3 Enter the amount you want to bet: 55 < CHEAT MODE IS ENABLED. > The answer is: 499. Please guess the 3-digit number: 433 10 is your guess. You have 9 guesses reamining. Number of correct digits: 1 Sum: 4 Please guess the 3-digit number: 493 You have 8 guesses reamining. Number of correct digits: 1 Sum: 4 Please guess the 3-digit number: 499 You have 7 guesses reamining. Number of correct digits: 1 Sum: 4
- 07-28-2011, 04:07 AM #7
Where is the print outs from the printlns you added to show variables values as they are changed and used?
Your "Sample output" doesn't show anything new that I can see.
Print out the values of lots of the variables so you can see what your code is doing.
- 07-28-2011, 04:28 AM #8
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
Sorry, I got ahead of myself there.
Here's what I got when I tried the program out with the tracing variables displayed:
Java Code:Would you like to play Mastermind (y/n)? y Enter the amount of money you currently have: 45 Please enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: 3 Enter the amount you want to bet: 44 < CHEAT MODE IS ENABLED. > The answer is: 143. Please guess the 3-digit number: 142 7 is your guess. numCorrect == 0 sessionSum == 0 user_guesses == 0 guessesRem == 10 incorrect ==0 numCorrect == 2 sessionSum == 5 user_guesses == 1 guessesRem == 9 incorrect ==1 You have 9 guesses reamining. Number of correct digits: 2 Sum: 5 numCorrect == 2 sessionSum == 5 user_guesses == 1 guessesRem == 9 incorrect ==1 Please guess the 3-digit number: 142 numCorrect == 2 sessionSum == 5 user_guesses == 2 guessesRem == 8 incorrect ==2 You have 8 guesses reamining. Number of correct digits: 2 Sum: 5 numCorrect == 2 sessionSum == 5 user_guesses == 2 guessesRem == 8 incorrect ==2 Please guess the 3-digit number: 143 numCorrect == 2 sessionSum == 5 user_guesses == 3 guessesRem == 7 incorrect ==3 You have 7 guesses reamining. Number of correct digits: 2 Sum: 5 numCorrect == 2 sessionSum == 5 user_guesses == 3 guessesRem == 7 incorrect ==3 Please guess the 3-digit number:
- 07-28-2011, 04:38 AM #9
that's a start.
What about the values that control the decisions and loops?
The variables you've shown are not used in many if() tests
- 07-28-2011, 04:54 AM #10
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
Followed your direction; here's what I got:
Java Code:Would you like to play Mastermind (y/n)? y Enter the amount of money you currently have: 45 Please enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: 2 Enter the amount you want to bet: 43 < CHEAT MODE IS ENABLED. > The answer is: 696. Please guess the 3-digit number: 604 10 is your guess. -- DEBUGGING -- numCorrect == 0 sessionSum == 0 guessesRem == 20 incorrect ==0 - - DEBUG: CONTROLL VARS - - user_guesses == 0 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 19 incorrect ==1 - - DEBUG: CONTROLL VARS - - user_guesses == 1 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4 You have 19 guesses reamining. Number of correct digits: 1 Sum: 6 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 19 incorrect ==1 - - DEBUG: CONTROLL VARS - - user_guesses == 1 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4 Please guess the 3-digit number: 606 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 18 incorrect ==2 - - DEBUG: CONTROLL VARS - - user_guesses == 2 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4 You have 18 guesses reamining. Number of correct digits: 1 Sum: 6 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 18 incorrect ==2 - - DEBUG: CONTROLL VARS - - user_guesses == 2 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4 Please guess the 3-digit number: 606 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 17 incorrect ==3 - - DEBUG: CONTROLL VARS - - user_guesses == 3 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4 You have 17 guesses reamining. Number of correct digits: 1 Sum: 6 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 17 incorrect ==3 - - DEBUG: CONTROLL VARS - - user_guesses == 3 max_guesses == 20 r1 == 6 r2 == 9 r3 == 6 g1 == 6 g2 == 0 g3 == 4
Java Code:while( user_guesses < max_guesses ) { if ((r1 == g1) & (r2 == g2) & (r3 == g3)) { System.out.println("You won!!!"); System.out.println("You had " + incorrect + "wrong guesses."); System.out.println("You earned: "); System.out.println("Your balance is now x dollars."); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); break; } else if ((r1 == g1) & (r2 == g2)) { numCorrect = 2; sessionSum = r1 + r2; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if ((r1 == g1) & (r3 == g3)) { numCorrect = 2; sessionSum = r1 + r3; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if ((r2 == g2) & (r3 == g3)) { numCorrect = 2; sessionSum = r2 + r3; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if (r1 == g1) { numCorrect = 1; sessionSum = r1; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if (r2 == g2) { numCorrect = 1; sessionSum = r2; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if (r3 == g3) { numCorrect = 1; sessionSum = r3; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else { numCorrect = 0; sessionSum = 0; user_guesses++; guessesRem--; incorrect++; // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); int g1 = guess / 100; // hundred's digit int g2 = guess % 100 / 10; // ten's digit int g3 = guess % 100 % 10 / 1; // one's digit }
Java Code:MasterMind.java:364: g1 is already defined in main(java.lang.String[]) int g1 = guess / 100; // hundred's digit ^ MasterMind.java:365: g2 is already defined in main(java.lang.String[]) int g2 = guess % 100 / 10; // ten's digit ^ MasterMind.java:366: g3 is already defined in main(java.lang.String[]) int g3 = guess % 100 % 10 / 1; // one's digit ^
EDIT: This might just be telling me to omit the redundant "int" declaration... I'll start there.Last edited by serenityN0W; 07-28-2011 at 04:57 AM.
- 07-28-2011, 05:02 AM #11
You could also move the original definitions and assignments of g1, etc down so they are inside of the while().
- 07-28-2011, 05:06 AM #12
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
It works! Thanks for your help, Norm.
Java Code:Would you like to play Mastermind (y/n)? y Enter the amount of money you currently have: 45 Please enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: 3 Enter the amount you want to bet: 43 < CHEAT MODE IS ENABLED. > The answer is: 646. Please guess the 3-digit number: 603 9 is your guess. -- DEBUGGING -- numCorrect == 0 sessionSum == 0 guessesRem == 10 incorrect ==0 - - DEBUG: CONTROLL VARS - - user_guesses == 0 max_guesses == 10 r1 == 6 r2 == 4 r3 == 6 g1 == 6 g2 == 0 g3 == 3 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 9 incorrect ==1 - - DEBUG: CONTROLL VARS - - user_guesses == 1 max_guesses == 10 r1 == 6 r2 == 4 r3 == 6 g1 == 6 g2 == 0 g3 == 3 You have 9 guesses reamining. Number of correct digits: 1 Sum: 6 -- DEBUGGING -- numCorrect == 1 sessionSum == 6 guessesRem == 9 incorrect ==1 - - DEBUG: CONTROLL VARS - - user_guesses == 1 max_guesses == 10 r1 == 6 r2 == 4 r3 == 6 g1 == 6 g2 == 0 g3 == 3 Please guess the 3-digit number: 606 -- DEBUGGING -- numCorrect == 2 sessionSum == 12 guessesRem == 8 incorrect ==2 - - DEBUG: CONTROLL VARS - - user_guesses == 2 max_guesses == 10 r1 == 6 r2 == 4 r3 == 6 g1 == 6 g2 == 0 g3 == 6 You have 8 guesses reamining. Number of correct digits: 2 Sum: 12 -- DEBUGGING -- numCorrect == 2 sessionSum == 12 guessesRem == 8 incorrect ==2 - - DEBUG: CONTROLL VARS - - user_guesses == 2 max_guesses == 10 r1 == 6 r2 == 4 r3 == 6 g1 == 6 g2 == 0 g3 == 6 Please guess the 3-digit number: 646 You won!!! You had 2wrong guesses. You earned: Your balance is now x dollars. -- DEBUGGING -- numCorrect == 2 sessionSum == 12 guessesRem == 8 incorrect ==2 - - DEBUG: CONTROLL VARS - - user_guesses == 2 max_guesses == 10 r1 == 6 r2 == 4 r3 == 6 g1 == 6 g2 == 4 g3 == 6 Please enter difficulty level.
- 07-28-2011, 05:19 AM #13
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
I moved the variable declarations within the while loop as you'd suggested. However, when I run the program and input the correct answer, this occurs:
Java Code:You won!!! You had 1wrong guesses. You earned: Your balance is now x dollars. You have 9 guesses reamining. Number of correct digits: 2 Sum: 9 -- DEBUGGING -- numCorrect == 2 sessionSum == 9 guessesRem == 9 incorrect ==1 - - DEBUG: CONTROLL VARS - - user_guesses == 1 max_guesses == 10 r1 == 7 r2 == 2 r3 == 8 g1 == 7 g2 == 2 g3 == 8 Please enter difficulty level. Enter 1 for beginner, 2 for intermediate, or 3 for advanced: ou won!!! You had 1wrong guesses. You eException in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at MasterMind.main(MasterMind.java:62)
Here's the current while loop:
Java Code:while( user_guesses < max_guesses ) { int g1 = guess / 100; // hundred's digit int g2 = guess % 100 / 10; // ten's digit int g3 = guess % 100 % 10 / 1; // one's digit if ((r1 == g1) & (r2 == g2) & (r3 == g3)) { System.out.println("You won!!!"); System.out.println("You had " + incorrect + "wrong guesses."); System.out.println("You earned: "); System.out.println("Your balance is now x dollars."); System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); break; } else if ((r1 == g1) & (r2 == g2)) { numCorrect = 2; sessionSum = r1 + r2; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if ((r1 == g1) & (r3 == g3)) { numCorrect = 2; sessionSum = r1 + r3; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if ((r2 == g2) & (r3 == g3)) { numCorrect = 2; sessionSum = r2 + r3; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if (r1 == g1) { numCorrect = 1; sessionSum = r1; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if (r2 == g2) { numCorrect = 1; sessionSum = r2; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else if (r3 == g3) { numCorrect = 1; sessionSum = r3; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } else { numCorrect = 0; sessionSum = 0; user_guesses++; guessesRem--; incorrect++; System.out.println("\nYou have " +guessesRem+" guesses reamining."); System.out.println("Number of correct digits: " + numCorrect); System.out.println("Sum: " + sessionSum); System.out.print("\nPlease guess the " +secretCodeDigits+ "-digit number: "); guess = keyboard.nextInt(); guessString = String.valueOf(guess); // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); } // D E B U G System.out.println(); System.out.println( "-- DEBUGGING --"); System.out.println( "numCorrect == " + numCorrect ); System.out.println( "sessionSum == " + sessionSum ); System.out.println( "guessesRem == " + guessesRem ); System.out.println( "incorrect ==" + incorrect ); System.out.println(); System.out.println( "- - DEBUG: CONTROLL VARS - - "); System.out.println( "user_guesses == "+ user_guesses ); System.out.println( "max_guesses == " + max_guesses); System.out.println( "r1 == " + r1); System.out.println( "r2 == " + r2); System.out.println( "r3 == " + r3); System.out.println( "g1 == " + g1); System.out.println( "g2 == " + g2); System.out.println( "g3 == " + g3); }
- 07-28-2011, 05:26 AM #14You eException in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at MasterMind.main(MasterMind.java:62)
Its interesting that the end of the error message is mixed in with what was being printed out. Any ideas why that happened?
- 07-28-2011, 05:37 AM #15
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
Thanks, I'll look through Scanner's methods.
I was wondering the same thing... no clue. I've never seen anything like that before.
- 07-28-2011, 06:00 AM #16
Member
- Join Date
- Jul 2011
- Posts
- 10
- Rep Power
- 0
Should I be using public static final int WORD?
- 07-28-2011, 02:54 PM #17
Similar Threads
-
difficulty making java program, Help Me
By 3c4hy0 in forum New To JavaReplies: 11Last Post: 08-13-2010, 01:08 PM -
My difficulty to create a database with a java program
By 3c4hy0 in forum JDBCReplies: 2Last Post: 08-13-2010, 12:42 PM -
write a program to generate a series using runtime parameters
By satheeshtech in forum New To JavaReplies: 2Last Post: 02-02-2010, 04:01 PM -
Generating Fibonacci Series with a Multithreaded Java Program
By firesauce in forum Threads and SynchronizationReplies: 1Last Post: 10-20-2009, 08:26 AM -
help-executing the program
By j2vdk in forum New To JavaReplies: 6Last Post: 08-30-2008, 10:18 PM
Bookmarks