我用Java编写一个机器人,如果岩石存在,并且右边或左边有一座山,我希望它分析一些东西。我已经尝试过了:
if (rockExisting() && hillExisting("left") || rockExisting() && hillExisting("right"))
它正在运作,但我可以缩短它吗? (E.G.与redex,一位朋友告诉我,但Java Reference让我失望。)我还可以使用逻辑XOR吗? (如果左右有一座小山,条件会是假的?(“^”对我不起作用)
答案 0 :(得分:5)
if (rockExisting() && hillExisting("left") || rockExisting() && hillExisting("right"))
与
相同if (rockExisting() && (hillExisting("left") || hillExisting("right")))
因为&&
的优先级高于||
答案 1 :(得分:1)
使用boolean algebra,您可以简化if条款/条件。你可以写:
code
根据分配法
if (rockExisting() && (hillExisting("left") || hillExisting("right")))
(a∧b)∨(a∧c) = a∧(b∨c)
... ∧
&&
... ∨
||
... rockExisting()a
... hillExisting(“left”)b
... hillExisting(“right”)