简体   繁体   中英

Guessing game play again trouble

Ok so I've tried one method but it kept showing "Do you want to play again" every time i entered a number for some reason. Here is what I have so far. What else could i do to so that only after the user guesses the correct answer it asks if he/she wants to play again?

import java.util.Random;
import java.util.Scanner;

public class GuessNumber {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        Random rand = new Random();
        int number = rand.nextInt(100) + 1;
        int guess;

        System.out.println("Guess the number between 1 and 100\n");

        guess = scan.nextInt();

        while (true) {
            if(guess < number)       
               System.out.println("Higher!");
            else if(guess > number)
               System.out.println("Lower!");
            else if (guess == number){
               System.out.println("Correct!");
            }
               guess = scan.nextInt();
       }
    }
  }

Try out this

class GuessNumber {

    static Random rand = new Random();
    static Scanner scan = new Scanner(System.in);
    static int number;

    public static void main(String[] args) {
        playGame();
    }

    public static void playGame() {
        number = rand.nextInt(100) + 1;
        System.out.println("Guess the number between 1 and 100");
        while (true) {
            int guess = scan.nextInt();
            if (guess < number) {
                System.out.println("Higher!");
            } else if (guess > number) {
                System.out.println("Lower!");
            } else if (guess == number) {
                System.out.println("Correct!");
                System.out.println("Do you like to play again?[1 for Yes/0 for No]");
                int val = scan2.next();
                if (val == 1)
                    playGame();
                else
                    break;
            }
        }
    }
}

or rather than using same scanner you can use another scanner and get string input as follows

 else if (guess == number) {
      System.out.println("Correct!");
      Scanner scan2 = new Scanner(System.in);
      System.out.println("Do you like to play again?[Y/N]");
      String val = scan2.next();
      if (val.equalsIgnoreCase("Y"))
           playGame();
      else 
           break;
 }

You need to exit the while when correct.

To do so, after the line:

System.out.println("Correct!");

Add another line like this:

break;

Mostly out of fun, I implemented a game that fits the description of what you were trying to do. The code is not the cleanest / most efficient, but it definitely works!

Take a look at it and see if you can figure out your problem.

import java.util.Random;
import java.util.Scanner;

public class GuessingGame {

public static void main(String[] args) {

        System.out.println("Guess the number between 1 and 100");

        playGuessingGame();

        while (true) {
            System.out
                .println("Do you want to play again? Type y / n and hit enter");

            Scanner scan = new Scanner(System.in);
            String playAgain = scan.next();

            if (playAgain.charAt(0) == 'y') {
                System.out.println("Okay, I picked a new number. Good luck!");
                playGuessingGame();
            } else {
                System.out.println("Thanks for playing!");
                break;
            }
        }

    }

    public static void playGuessingGame() {
        Scanner scan = new Scanner(System.in);
        Random rand = new Random();

        int guess;
        int number = rand.nextInt(100) + 1;

        guess = scan.nextInt();

        while (guess != number) {
            if (guess < number)
                System.out.println("Higher!");
            else if (guess > number)
                System.out.println("Lower!");
            else if (guess == number) {
                System.out.println("Correct!");
            }
            guess = scan.nextInt();
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM