繁体   English   中英

猜谜游戏中的while循环有问题吗?

[英]Problem with while loop in guessing game?

我面临着让游戏结束的问题!

如果用户的 numberOfTries >4,我创建 int numberOfTries = 0 并尝试结束游戏。 我想不通问题出在哪里?

        do {
            int theNumber = (int) (Math.random() * 100 +1 );
            int guess = 0;
            int numberOfTries = 0;

            while (guess != theNumber){
                System.out.println("Guess a number between 1 and 100");
                guess = scan.nextInt();


                if (guess< theNumber) {
                    System.out.println(guess + " is too low.");
                    numberOfTries += 1 ;
                }


                else if ( guess > theNumber) {
                    System.out.println(guess + " is too high.");
                    numberOfTries += 1;
                }

                else if(guess == theNumber) {
                    System.out.println(guess + " is correct!");

                    if (numberOfTries == 1 ){
                        System.out.println("You are a  genius!");

                    }
                    else if (numberOfTries == 0){
                        System.out.println("You are a pure genius!");
                    }
                    else if (numberOfTries <=4 ){
                        System.out.println("It only took you " + numberOfTries +
                                " Good Job!");
                    }

                }
                else if (numberOfTries > 4){
                    System.out.println("Game over!");
                }

            }
            System.out.println("Would you like to play again?(y/n)");

            playAgain = scan.next();

        }while (playAgain.equalsIgnoreCase("y"));

        System.out.println("Thank you for playing this game! Good Bye!");

        scan.close();

    }
}

谁能给我解释一下,好吗? 谢谢

当您的尝试次数超过 4 时,您应该打破循环。不仅仅是打印出消息。

您的 if 语句总是进入三个条件之一,因此永远不会进入最后一个条件。 一种解决方案是改变这个:

else if (numberOfTries > 4){
                System.out.println("Game over!");
 }

为了这:

if (numberOfTries > 4){
        System.out.println("Game over!");
        break;
 }

您的 if else 构造如下所示:

if (guess< theNumber) {

}
else if ( guess > theNumber) {

}
else if(guess == theNumber) {

}
else if (numberOfTries > 4){

}

所以首先你问猜测是否小于数字,然后如果不是这样,如果它更大,然后如果不是这样,如果它相等。

现在,您的 if-else 构造已经用尽了所有可能的状态,因为一个数字必须大于、小于或等于另一个数字,因此您的最后一个 else if 永远不会被输入。

只需将最后一个 else if 更改为正常 if:

if (numberOfTries > 4){

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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