玩java操作符(XOR和AND / OR)

时间:2011-01-18 19:29:19

标签: java operators

在程序中我试图检查两个布尔值(从函数返回);需要检查的条件是:
- 只有当返回值中的任何一个为真且另一个为假时,我才有问题;
- 如果两者都是真或假,我很高兴下一步。

以下两个例子中的哪一个是检查条件的有效方法,还是有更好的解决方案?
a和b是整数值,我在isCorrect函数中检查条件是否正确,它返回true或false。

1

 // checking for the correctness of both a and b
 if ((isCorrect(a) && !isCorrect(b)) ||
     (!isCorrect(a) && isCorrect(b)))
 { 
   // a OR b is incorrect
 }
 else
 {
   // a AND b are both correct or incorrect
 }

2

  // checking for the correctness of both a and b
  if (! (isCorrect(a) ^ isCorrect(b)))
  {
    // a OR b is incorrect
  }
  else
  {
    // a AND b are correct or incorrect
  }


谢谢,
的Ivar

P.S:代码可读性不是问题。 编辑:我打算在第二个选项中有一个XOR。 另外,我同意==和!=选项,但如果我不得不使用布尔运算符呢?

4 个答案:

答案 0 :(得分:6)

if (isCorrect(a) != isCorrect(b)) {
  // a OR b is incorrect
} else {
  // a AND b are correct or incorrect
}

答案 1 :(得分:6)

您的测试不需要布尔运算符,只需:

if (isCorrect(a) == isCorrect(b)) {
    // they both have the same value
} else {
    // they don't ...
}

编辑 - 我故意不使用相同的评论来反映评论的主要目的应该是描述意图,而不是具体的实施。在这种情况下,最简单的意图陈述是ab都获得了相同的结果。

答案 2 :(得分:2)

简单地:

  if (isCorrect(a) == isCorrect(b))
  {
       // a AND b are both correct or incorrect
  } else {
      // a OR b is incorrect

  }

答案 3 :(得分:1)

这个怎么样?

if(isCorrect(a) != isCorrect(b))
{
  //problem
}
else
{
  //not a problem
}

你也可以使用XOR,但是!=工作正常,如果处理布尔值IMO,则更易读。