简体   繁体   中英

Program reading only the first number was entered, the rest of the number entered by the user program ignores and reading always the first number?

I have a program coding below, I tried but it is always reading the first number only in the cases....

"Program reading only the first number was entered, the rest of the number entered by the user program ignores and reading always the first number?" "Also please solve math.random for specific number only".

public static void main(String[] args) {

    Scanner reading = new Scanner(System.in);


    int randomNumber = (int) (Math.random() * 50-1);

    int input;
    int guessNumber;

    System.out.println("       Welcome UCT beginers Game we will tes your IQ      ");
    for (int i=1; i<3; i++)
    {
    System.out.println("       Please select your level Game     ");
    System.out.println("1. Three chances to play.");
    System.out.println("2. Five chances to play");
    System.out.println("3. Ten chances to play");
    System.out.println("4. Exit the Game");

    input = reading.nextInt();



    switch (input) 
    {

    case 1:
        System.out.println("       Welcome You have chosen level ONE. This is normally can pass only with higher IQ");
        System.out.println("Please Guess my number");
        guessNumber = reading.nextInt();
        if (randomNumber == guessNumber )
        {
            System.out.println("          Congratulation; You have earned 3 coins");
            break;

        }

        else if (randomNumber > guessNumber )
        {for (int a = 1; a < 3; a++)

            {
            System.out.println("          Sorry Low number");
            guessNumber = reading.nextInt();

            }
            System.out.println("Sorry!  we can't help you any more, You failed *** The number was "+randomNumber);
        }
        else if (randomNumber < guessNumber)
        {for (int a = 1; a < 3; a++)
            {
            System.out.println("          Sorry High number"     );
            guessNumber = reading.nextInt();
            }
            System.out.println("Sorry!  we can't help you any more, You failed *****The number was "+ randomNumber);
        }
        break;
    case 2:
        System.out.println("       Welcome You have chosen level TWO. This is normally can pass middale IQ");
        System.out.println("Please Guess my number");
        guessNumber = reading.nextInt();
        if (randomNumber == guessNumber )
        {
            System.out.println("          Congratulation; You have earned 3 coins");
            break;
        }
        else if (randomNumber > guessNumber )
        {for (int a = 1; a < 5; a++)
            {
            System.out.println("          Sorry Low number");
            guessNumber = reading.nextInt();
            }
        System.out.println("Sorry!  we can't help you any more, You failed *** The number was "+randomNumber);
        }
        else if (randomNumber < guessNumber)
        {for (int a = 1; a < 5; a++)
            {
            System.out.println("          Sorry High number");
            guessNumber = reading.nextInt();
            }
            System.out.println("Sorry!  we can't help you any more, You failed *** The number was"+randomNumber);
        }
        break;
    case 3:
        System.out.println("       Welcome You have chosen level THREE. This passes normally every person");
        System.out.println("Please Guess my number");
        guessNumber = reading.nextInt();
        if (randomNumber == guessNumber )
        {
            System.out.println("          Congratulation; You have earned 3 coins");
            break;
        }
        else if (randomNumber > guessNumber )
        {
            for (int a = 1; a < 10; a++)
            {
            System.out.println("          Sorry Low number");
            guessNumber = reading.nextInt();
            }
            System.out.println("Sorry!  we can't help you any more, You failed *** The number was "+randomNumber);
        }
        else if (randomNumber < guessNumber)
        {
            for (int a = 1; a < 10; a++)
            {
            System.out.println("          Sorry High number");
            guessNumber = reading.nextInt();
            }
            System.out.println("Sorry!  we can't help you any more, You failed *** The number was "+randomNumber);
        }
        break;
    case 4:

        System.exit(0);
        break;
    default:
        System.out.println("Invalid entary");
        break;

    }

}



}
public static void main(String args[]) {
        int input;
        int guessNumber;
        Scanner reading = new Scanner(System.in);
        int randomNumber = (int) (Math.random() * 50 - 1);
        System.out.println("       Welcome UCT beginers Game we will tes your IQ      ");
        System.out.println("       Please select your level Game     ");
        System.out.println("1. Three chances to play.");
        System.out.println("2. Five chances to play");
        System.out.println("3. Ten chances to play");
        System.out.println("4. Exit the Game");
        while (reading.hasNext()){
            input = reading.nextInt();
            switch (input) {
                case 1:
                    System.out.println("       Welcome You have chosen level ONE. This is normally can pass only with higher IQ");
                    System.out.println("Please Guess my number");
                    guessNumber = reading.nextInt();
                    if (randomNumber == guessNumber) {
                        System.out.println("          Congratulation; You have earned 3 coins");
                        break;

                    } else if (randomNumber > guessNumber) {
                        for (int a = 1; a < 3; a++)

                        {
                            System.out.println("          Sorry Low number");
                            guessNumber = reading.nextInt();

                        }
                        System.out.println("Sorry!  we can't help you any more, You failed *** The number was " + randomNumber);
                    } else if (randomNumber < guessNumber) {
                        for (int a = 1; a < 3; a++) {
                            System.out.println("          Sorry High number");
                            guessNumber = reading.nextInt();
                        }
                        System.out.println("Sorry!  we can't help you any more, You failed *****The number was " + randomNumber);
                    }
                    break;
                case 2:
                    System.out.println("       Welcome You have chosen level TWO. This is normally can pass middale IQ");
                    System.out.println("Please Guess my number");
                    guessNumber = reading.nextInt();
                    if (randomNumber == guessNumber) {
                        System.out.println("          Congratulation; You have earned 3 coins");
                        break;
                    } else if (randomNumber > guessNumber) {
                        for (int a = 1; a < 5; a++) {
                            System.out.println("          Sorry Low number");
                            guessNumber = reading.nextInt();
                        }
                        System.out.println("Sorry!  we can't help you any more, You failed *** The number was " + randomNumber);
                    } else if (randomNumber < guessNumber) {
                        for (int a = 1; a < 5; a++) {
                            System.out.println("          Sorry High number");
                            guessNumber = reading.nextInt();
                        }
                        System.out.println("Sorry!  we can't help you any more, You failed *** The number was" + randomNumber);
                    }
                    break;
                case 3:
                    System.out.println("       Welcome You have chosen level THREE. This passes normally every person");
                    System.out.println("Please Guess my number");
                    guessNumber = reading.nextInt();
                    if (randomNumber == guessNumber) {
                        System.out.println("          Congratulation; You have earned 3 coins");
                        break;
                    } else if (randomNumber > guessNumber) {
                        for (int a = 1; a < 10; a++) {
                            System.out.println("          Sorry Low number");
                            guessNumber = reading.nextInt();
                        }
                        System.out.println("Sorry!  we can't help you any more, You failed *** The number was " + randomNumber);
                    } else if (randomNumber < guessNumber) {
                        for (int a = 1; a < 10; a++) {
                            System.out.println("          Sorry High number");
                            guessNumber = reading.nextInt();
                        }
                        System.out.println("Sorry!  we can't help you any more, You failed *** The number was " + randomNumber);
                    }
                    break;
                case 4:

                    System.exit(0);
                    break;
                default:
                    System.out.println("Invalid entary");
                    break;

            }

        }


    }

When I run the code it reads all the user input. However, it does not process it as it should. I assume that the idea is that the user can guess several times - each time the user is told whether the guessed number is too high or too low and s/he can adjust the guess accordingly.

The problem in the posted attempt is with is this of code (there are several similar pieces):

    else if (randomNumber > guessNumber )
    {for (int a = 1; a < 3; a++)

        {
        System.out.println("          Sorry Low number");
        guessNumber = reading.nextInt();

        }
        System.out.println("Sorry!  we can't help you any more, You failed *** The number was "+randomNumber);
    }

since this loop reads the next guess from the user, but does not check it against the randomNumber, but just keeps outputting that the number is too low.

What you need to do is to re-think your solution. Once the user made a second guess the code needs to check again whether it is equal to the randomNumber, less than the randomNumber or larger than the randomNumber. So your checking needs to be inside the loop, not the loops inside the checking.

 while user has not made three guesses
      get next guess from user
      check guess and print appropriate messages 

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