Java 爪哇语&&引用;vs"|&引用;while语句问题
在过去的一两天里,我还不熟悉Java,我一直在忙着编写一些非常基本的程序。我有以下代码作为一个简单的数字猜测程序Java 爪哇语&&引用;vs"|&引用;while语句问题,java,Java,在过去的一两天里,我还不熟悉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 c
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);
}
}
公共类猜测2{
公共静态void main(字符串参数[])
抛出java.io.IOException{
//这个程序会让你在走近时使用不同的提示来解决一个数字难题
int-answer='5',guess=0,i=0;
字符忽略;
做{
i++;
System.out.print(“你能猜出我想的数字吗?”);
guess=(int)System.in.read();
if(guess==answer)System.out.println(“CORRECT!!!”);
if(猜测>回答)System.out.println(“太高了!”);
如果(猜测如果您希望在A或B为真时退出循环,那么您希望在A和B均为假的情况下保持循环。这正是您的代码的读取方式。为您提供了所需的行为,因为它需要这两个条件都计算为真才能继续。这意味着如果ls guess(第一个条件失败),或i等于5(第二个条件失败),循环将退出。但是,使用| |运算符,只要其中一个为真,您就说continue on(继续)。它们分别称为逻辑and和逻辑or。这应该有助于:
a&&b->如果两者都为真,则计算结果为真,否则为假
< p> a b> >如果是真,则计算为真,否则假让我们考虑可能性。首先,用或(或)算子:
(answer != guess || i != 5)
(answer != guess && i != 5)
如果答案等于猜测,则答案!=猜测的计算结果为false,根据您所描述的,这将使程序退出。但是,i!=5仍然为true,因此整个语句的计算结果将为true,使程序继续运行,而语句为true
如果答案等于猜测值,且i==5,则两者都将计算为false,并且,由于它们都不是true,OR将计算为false,从而使循环退出
现在,使用AND(&&)运算符:
(answer != guess || i != 5)
(answer != guess && i != 5)
如果答案等于猜测,则答案!=猜测的计算结果为false,由于它是and运算符,要求两者都为true,因此语句将计算结果为false,使循环退出。如果我等于5,则我!=5的计算结果为false,如前所述,将使语句计算结果为false,并使循环退出
希望能有所帮助
编辑:A我发现,可能对你有帮助,请看第8项。这没有意义,因为你没有以正确的方式阅读这些内容:
你所要求的是:继续循环,直到answer==guess或i==5
然而,这段代码实际上意味着:
do{
} while(answer!=guess && i != 5);
“如果答案不是猜测和i!=5,则继续循环”
这本质上意味着同一件事。你发现它违反直觉的原因是,当do-while循环指定“继续条件”时,你想到了“停止条件”
有些语言(不是Java)确实提供了do-until循环,这是您想要做的事情。如果它是用Java提供的,则可能是这样的:
do {
} until (answer == guess || i == 5)
记住——条件是继续循环。所以你想要一个条件,当answer==guess | | i==5
——换句话说,与该条件相反时,该条件将无效。代码是正确的,你的期望是错误的。可能会有帮助。那篇文章肯定有助于我澄清问题。谢谢!哈哈!!!现在有意义了e对我来说。当你把它更多地放在“假+假”对“假+真”和“真对假”的术语中时。我还认为我认为它更多地是一个退出声明,而不是一个继续声明。谢谢你,伙计!