[英]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.