Java "&"与 "|"while 语句问题

标签 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 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/

相关文章:

java - 转发到相同的 struts2 操作时丢失 bean 的值

java - ServerSocket如何接收多个文件

Java DB (Derby) 数据库更改列大小

java - 如何浏览h2数据库

java - Java的嵌入式Prolog解释器/编译器

java - 在Java中将数值转换为日期

java - 如何通过命令行选项使用 Maven Surefire 排除标签?

java - 不能用 proguard 缩水

java - jsf 成功时打开对话框

java - 如何在 Centos 5 上编译 Java 代码?