I cant get the \"best game\" function to work corrctly. The \"best game\" functi
ID: 641267 • Letter: I
Question
I cant get the "best game" function to work corrctly. The "best game" function should calculate the fewest guesses needed to win any one game. When the second out of three games is the best game, there is no way to output that specific number of guesses.
Here is what I have so far:
public class GuessingGame2 {
public static void main(String [] args) {
Scanner console =new Scanner(System.in);
Random r = new Random();
String playagain;
int
randomnumber,
userguess = 0,
numberofguesses = 0,
totalguesses = 0,
numberofgames = 0,
bestgame = 1000;
double guessespergame;
do {
//Calculates random number between 1 and 100.
randomnumber = r.nextInt(100)+1;
//Portion #1: Starts Game
//Statement to initiate game.
System.out.println("I'm thinking of a number between 1 and 100...");
//TELLS ME THE ANSWER - TAKE OUT LATER
System.out.println("*** HINT: the answer is: " + randomnumber);
//Portion #2: First Guess
//FirstGuess
System.out.print("Your Guess? ");
userguess = console.nextInt();
//Adds to Number of Guesses
numberofguesses++;
//Portion #3: While loop to continue guessing
while (userguess != randomnumber) {
//Prints statments for wrong answers
if (userguess < randomnumber) {
System.out.println("It's Higher.");
} else if (userguess > randomnumber) {
System.out.println("It's Lower.");
}
//Second Guess
System.out.print("Your Guess? ");
userguess = console.nextInt();
//Adds to number of guesses & total if answer wrong
numberofguesses++;
}
//Portion #4: Statments after "user" guesses correctly
//Tells user how many guesses neccesary
System.out.println("You guessed it in " + numberofguesses + " guesses!");
//Statement and scanner that Ask User if they want to play again
System.out.print("Play again? ");
playagain = console.next();
System.out.println();
//Portion #5: Overall Results
numberofgames++;
totalguesses = totalguesses + numberofguesses;
bestgame = numberofguesses;
if (numberofguesses == 1) {
bestgame = numberofguesses;
}
else if (numberofguesses != 1) {
bestgame = numberofgames;
}
guessespergame= (double) totalguesses/numberofgames;
//Portion #6: Reset Number of guesses
//Sets numberofguesses to 0
numberofguesses=0;
} while (playagain.equalsIgnoreCase("y") || playagain.equalsIgnoreCase("yes"));
System.out.println("Your overall results:");
System.out.println("Total games = " + numberofgames);
System.out.println("Total guesses = " + totalguesses);
System.out.printf("Guesses/Game = %.1f ", guessespergame);
System.out.println("Best game: " + bestgame);
}
}
Explanation / Answer
Comment if you have any doubts.
I've bolded the modified code.
import java.util.*;
public class GuessingGame2
{
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
Random r = new Random();
String playagain;
int randomnumber,userguess = 0,numberofguesses = 0,totalguesses = 0,numberofgames = 0,bestgame = Integer.MAX_VALUE;
double guessespergame;
do {
// Calculates random number between 1 and 100.
randomnumber = r.nextInt(100) + 1;
// Portion #1: Starts Game
// Statement to initiate game.
System.out.println("I'm thinking of a number between 1 and 100...");
// TELLS ME THE ANSWER - TAKE OUT LATER
System.out.println("*** HINT: the answer is: " + randomnumber);
// Portion #2: First Guess
// FirstGuess
System.out.print("Your Guess? ");
userguess = console.nextInt();
// Adds to Number of Guesses
numberofguesses++;
// Portion #3: While loop to continue guessing
while (userguess != randomnumber) {
// Prints statments for wrong answers
if (userguess < randomnumber) {
System.out.println("It's Higher.");
} else if (userguess > randomnumber) {
System.out.println("It's Lower.");
}
// Second Guess
System.out.print("Your Guess? ");
userguess = console.nextInt();
// Adds to number of guesses & total if answer wrong
numberofguesses++;
}
// Portion #4: Statments after "user" guesses correctly
// Tells user how many guesses neccesary
System.out.println("You guessed it in " + numberofguesses
+ " guesses!");
// Statement and scanner that Ask User if they want to play again
System.out.print("Play again? ");
playagain = console.next();
System.out.println();
// Portion #5: Overall Results
numberofgames++;
totalguesses = totalguesses + numberofguesses;
if(bestgame>numberofguesses)bestgame = numberofguesses;
guessespergame = (double) totalguesses / numberofgames;
// Portion #6: Reset Number of guesses
// Sets numberofguesses to 0
numberofguesses = 0;
} while (playagain.equalsIgnoreCase("y")
|| playagain.equalsIgnoreCase("yes"));
System.out.println("Your overall results:");
System.out.println("Total games = " + numberofgames);
System.out.println("Total guesses = " + totalguesses);
System.out.printf("Guesses/Game = %.1f ", guessespergame);
System.out.println("Best game: " + bestgame);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.