在过去的一两天里,我对 Java 还很陌生,我一直在忙着制作一些非常基本的程序。我有以下代码作为简单的猜数字程序
public class GUESS2 {
public static void main(String args[])
throws java.io.IOException {
//This program will have you solve a numeric puzzle using different hints as you get closer
int answer='5', guess=0, i=0;
char ignore;
do{
i++;
System.out.print("Can you guess the number I'm thinking of???");
guess = (int) System.in.read();
if(guess==answer) System.out.println("CORRECT!!!");
if(guess >answer) System.out.println("Too high!");
if(guess <answer) System.out.println("Too low!");
do{
ignore=(char) System.in.read();
}while (ignore != '\n');
} while(answer!=guess && i != 5);
}
}
我的问题是“while”语句。我希望它在 answer=guess 或 i=5 时退出此循环。当我使用 |或||它给了我相反的结果,并且只有当我同时执行answer=guess和i=5时才退出,这对我来说似乎是倒退的。当前使用“&&”的代码在answer=guess或i=5时有效,这不会使对我来说有感觉。
我还是个初学者,感谢你们花时间帮助我——可能是一些简单的事情,但我已经搞砸了一段时间了。
最佳答案
让我们考虑一下可能性。首先,使用 OR(||) 运算符:
(answer != guess || i != 5)
如果答案等于猜测,则答案!=猜测评估为假,根据您的描述,这应该使程序退出。然而, i != 5 仍然为真,因此整个语句将计算为真,使程序继续运行,而语句为真。
如果答案等于猜测,并且 i == 5,则两者都将计算为 false,并且由于它们都不为 true,因此 OR 将计算为 false,从而退出循环。
现在,使用 AND(&&) 运算符:
(answer != guess && i != 5)
如果答案等于猜测,则答案!=猜测计算结果为假,并且由于它是一个AND运算符,要求两者都为真,因此该语句将计算结果为假,从而退出循环。如果 i 等于 5,i != 5 的计算结果为 false,并且如前所述,将使语句的计算结果为 false,并且循环退出。
希望对您有所帮助。
编辑:A link我发现,可能对你有帮助,看第8条。
关于Java "&"与 "|"while 语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565344/