在一个if语句中缩短多个AND + OR(+ XOR,正则表达式)

时间:2017-03-13 19:18:47

标签: java regex if-statement

我用Java编写一个机器人,如果岩石存在,并且右边或左边有一座山,我希望它分析一些东西。我已经尝试过了:

if (rockExisting() && hillExisting("left") || rockExisting() && hillExisting("right"))

它正在运作,但我可以缩短它吗? (E.G.与redex,一位朋友告诉我,但Java Reference让我失望。)我还可以使用逻辑XOR吗? (如果左右有一座小山,条件会是假的?(“^”对我不起作用)

2 个答案:

答案 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”)