0

It looks like the Scanner is being used correctly here and being assigned to a variable correctly but I Cannot figure out what is going on. When I play this game in the code, the INT gets pulled in just fine. The strings will not get pulled in for some reason and even if I hardcode "yes" for the string it still exits the code.

package testTraining;

import java.util.Scanner;

public class GuessingGame {

static int gamesPlayed;   // The number of games played.
static int gamesWon;      // The number of games won.

public static void main(String[] args) {
   gamesPlayed = 0;
   gamesWon = 0;  // This is actually redundant, since 0 is 
                  //                 the default initial value.
   System.out.println("Let's play a game.  I'll pick a number between");
   System.out.println("1 and 100, and you try to guess it.");
  String yesno = "yes";
  Scanner yesScan = new Scanner(System.in);
   do {
      playGame();  // call subroutine to play one game
      System.out.print("Would you like to play again? ");
      yesno = yesScan.next();
   } while (yesno == "yes");
   System.out.println();
   System.out.println("You played " + gamesPlayed + " games,");
   System.out.println("and you won " + gamesWon + " of those games.");
   System.out.println("Thanks for playing.  Goodbye.");
} // end of main()            

static void playGame() {
    Scanner guessScan = new Scanner(System.in);
    int computersNumber; // A random number picked by the computer.
    int usersGuess;      // A number entered by user as a guess.
    int guessCount;      // Number of guesses the user has made.
    gamesPlayed++;  // Count this game.
    computersNumber = (int)(100 * Math.random()) + 1;
             // The value assigned to computersNumber is a randomly
             //    chosen integer between 1 and 100, inclusive.
    guessCount = 0;
    System.out.println();
    System.out.print("What is your first guess? ");
    while (true) {
       usersGuess = guessScan.nextInt();  // Get the user's guess.
       guessCount++;
       if (usersGuess == computersNumber) {
          System.out.println("You got it in " + guessCount
                  + " guesses!  My number was " + computersNumber);
          gamesWon++;  // Count this win.
          break;       // The game is over; the user has won.
       }
       if (guessCount == 6) {
          System.out.println("You didn't get the number in 6 guesses.");
          System.out.println("You lose.  My number was " + computersNumber);
          break;  // The game is over; the user has lost.
       }
       // If we get to this point, the game continues.
       // Tell the user if the guess was too high or too low.
       if (usersGuess < computersNumber)
          System.out.print("That's too low.  Try again: ");
       else if (usersGuess > computersNumber)
          System.out.print("That's too high.  Try again: ");
    }
    System.out.println();
} // end of playGame()

} // end of class GuessingGame
Collatrl
  • 171
  • 1
  • 13

1 Answers1

2

You need to compare strings with .equals("yes") instead of == "yes"