我有 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/