java - 评估两个陈述是否为假

标签 java

我有 ruby​​ 背景并且是 java 的新手。这让我有点困惑,我有一个非常简单的练习,但我无法保存。

我的方法是这样的:

public void act() 
    {
        while((treeLeft() == false) && (treeRight() == false))
        {
            move();
        }
    }
}

所以通常我的代码应该检查两边是否有一棵树(treeleft == true 和 treeright == true)以及当两边真的有树时停止而不移动。

可是左边只有一棵树,它怎么不动?我有什么错?

最佳答案

&& 运算符的工作方式是首先计算左侧,如果计算结果为 false,则不会计算右侧,因为无论右侧的结果如何,整个表达式的结果都将为 false。因此,一旦 treeLeft() 的计算结果为真,while 就会中断并停止移动。

正确的做法是:

while(!(treeLeft() && treeRight())) 

这意味着 while 将一直循环,直到 treeLeft() 和 treeRight() 的计算结果都为真。

替代版本,使用德摩根定律:

while(!treeLeft() || !treeRight())

关于java - 评估两个陈述是否为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19429258/

相关文章:

java - 使用 Java Restful 服务进行身份验证

java - 运行 Maven jar 文件时无法找到或加载主类

java - REST API 或 Java API 之间的选择

java - java中的树来存储文本中的单词

java - 行家: (use -source 5 or higher to enable static import declarations)

java - 每个日期单元格样式都可配置的 Android 自定义日历 View ?

java - newFixedThreadPool 创建了超出需要的任务

java - 找不到 URL 内容时更快失败,howto

java - Spring Cloud : Load Message Sources from config server

Java - 没有图形的 FontMetrics