检查多个条件是否全部为假或全部为真 - java

时间:2012-01-22 07:51:39

标签: java

这听起来很简单,但我的想法是空白

说我有这个

bool evaluator
for each form element{

    if (element.name = 'fname')
    {
      perform some op
      evaluator = true
    }else evaluator false


    if (element.name = 'city')
    {
      perform some op
      evaluator true
    }else evaluator false

    if (element.name='shipcity')
    {
      perform some op
      evaluator true
    }else evaluator false

}

return evaluator

where evaluator :

    if((t/f) && (t/f) && (t/f))
         |         |        |-----------------evaluation of condition 3
         |         |-----------evaluation of condition 2
         |--------------evaluation of condition 1

所以最后我得到'&&'三个条件。或者java有一个内置的方法,它将为我做这个

4 个答案:

答案 0 :(得分:8)

if (cond1 == cond2 && cond2 == cond3)

美观而简单

答案 1 :(得分:2)

检查多个条件是否全部为假或全部为真:

if (cond1 && cond2 && cond3 || !cond1 && !cond2 && !cond3) ...

有更简洁的方法来写这个,但我认为上述内容在表达意图时更清楚。

答案 2 :(得分:1)

如果你想检查它们是否都是真的或者都是假的,你可以这样做:

if ((c1 && c2 && c3) || (!c1 && !c2 && !c3)) {
  //do things
}

其中c1,c2和c3是布尔值。

希望这就是你所要求的。

答案 3 :(得分:1)

根据wcdolphin的评论,你可以这样做:

if(condition1 && condition2 && condition3){
   // do stuff
}

请注意,如果condition1(或任何其他嵌入条件)的计算结果为false,则甚至不会评估所有其他后续条件。这变得很重要:

if(condition1() && condition2() && condition3()){
   // do stuff
}

如果您改为使条件调用成为方法调用,例如,这可能是相对“昂贵”的操作 - 如果先前的条件求值为false,这将阻止调用以下函数。

对于内联条件也是如此,例如:

if((a < b) && (c < d) && (e < f)){
   // do stuff
}

如果a >= b,则不会调用c < de < f,这可以节省性能。 (这是对您的第一个代码段的改进,其中始终会评估所有3个条件。)