我试图建立一个数字猜测游戏,其中有一个while循环与2个条件。然而,即使在这两个条件中的一个变为false之后,循环也会继续进行,即使在这些条件之间有| |运算符。同样,如果我清除while循环的第一个条件,那么第二个条件就像我想要的那样完美地工作,但是如果它存在,那么idk为什么它不停止。这是我的密码:
import java.util.Random;
import java.util.Scanner;
public class NumberGuess {
public static void main(String args[]) {
Random num = new Random();
int number = 1 + num.nextInt(10);
Scanner inp = new Scanner(System.in);
boolean guessed = false;
System.out.println("Welcome to Number guess!");
int guess_count = 5;
while(guessed == false || guess_count > 0 ) {
System.out.print("Enter your guess: ");
int input = inp.nextInt();
if(input == number) {
System.out.println("You guessed it right!");
guessed = true;
}
else {
System.out.println("Nope!");
guessed = false;
guess_count--;
System.out.println("Guesses left: " + guess_count);
}
}
}
}
当计数器降到0以下时,循环也会继续,但我不想这样。请告诉我哪里错了。
4条答案
按热度按时间pb3s4cty1#
您可以通过替换
||
与&&
. 为什么要使用一个额外的标志变量,当你有guess_count
递减以检查猜测的次数。当猜测的数字等于输入值时,程序将终止。以下是简单的实现:n3schb8v2#
考虑如下修改循环:
或者修改你的条件如下:
mznpcxlj3#
while循环的条件应该从or改为
||
到一个和&&
. 目前||
将允许执行,如果guessed == false
或者guess_count > 0
. 这些条件中只有一个必须为真while
循环以继续执行。更改为and
&&
也就是说,如果数字猜对了,guessed
现在是true
以及while
循环将在该迭代之后停止。我没有得到任何错误的时候guess_counter
降到零下。请再试一次。7gyucuyw4#
你不需要or接线员。您需要的是and运算符。意味着你的情况应该是
(guessed == false && guess_count > 0 )
.为什么?
因为or条件运算符在条件为真时起作用,在您的情况下,如果用户无法猜测5次,则
guessed
变量仍然为false,而guess_count
小于零,所以你的一个条件是真的。和操作员检查这两种情况。