如果为真,则反转bool

时间:2014-01-06 20:08:18

标签: java boolean

很抱歉,如果这似乎是一个迟钝的问题,但如果另一个布尔值为真,那么最简单的方法是反转布尔值。换句话说,写condition ? !value : value的最短方式是什么,最好只评估value一次?

编辑:您知道,我将结果传递给方法

7 个答案:

答案 0 :(得分:9)

最短的路是

value ^= condition;

答案 1 :(得分:4)

你想要的只是

if (condition)
    value = !value;

无需携带条件运算符;那只会是不必要的混乱。这比

更可取的原因
value = condition ? !value : value;

是因为无论condition的值如何,上述都会执行赋值;如果conditionfalse,我们只需将value分配给自己。这也有效,但实际上并不是你想要的逻辑。如果 value为真,您想要反转condition(即执行作业)。我认为第二种变体只是对条件运算符的误用。除此之外,第一个变体肯定更易读,更容易理解。

答案 2 :(得分:3)

你可以尝试:

value = condition ^ value

虽然不是最易读的解决方案。

答案 3 :(得分:1)

这是你在寻找什么?

if(condition)
   value = !value

答案 4 :(得分:1)

为什么你甚至会打扰短期或长期。更喜欢更易读的代码。你可以写

if (SomeCondition) {
    value = !value;
}

由于不需要else条件,因为value在其他地方是value

答案 5 :(得分:0)

正如您的问题所说'invert bool if true'

你应该使用:

 if(statement)
    {

    value=!value;
    }

答案 6 :(得分:0)

一个好的方法是拥有这样的函数或方法

boolean invert(boolean condition, boolean value){ return condition != value; }

事实上:

condition value  inversion
t           t      f
t           f      t
f           t      t
f           f      f

在前两种情况下,条件为true,并且执行求反,否则在后两种情况下。