更好的方法来查找两个变量是否为真或两者都是错误的

时间:2011-03-28 06:24:22

标签: java boolean-logic

我有两个变量,可以是true或false。我通过在数据库上查询某些产品ID的存在与否来获得这些。

现在我需要设置另一个为true或false的变量。当两个变量都为真或两者都为假时,它将是真值。这是假的,一个是真的而另一个是假的。

目前我使用if语句

来处理它
if ( v1 == true && v2 == true )
 result = true;
else if ( v1==false && v2 == false )
 result = true;
else if ( v1 == true && v2 == false )
 result = false;
else if ( v1==false && v2 == true )
 result = false;

是否有更好的方法可以做到这一点?

7 个答案:

答案 0 :(得分:111)

我可能会遗漏一些非常基本的东西,但我会试一试:

result = ( v1 == v2 );

答案 1 :(得分:13)

您可以将逻辑XOR运算符和逻辑NOT运算符用作:

result = !(v1^v2);

答案 2 :(得分:5)

这种问题,给定一个真值表,最小化重现真值所需的逻辑,通常很好地对待Karnaugh Maps

你的真相表如下:

 v1 v2  f(v1, v2)
  t  t     t
  t  f     f
  f  t     f
  f  f     t

实际上,正如其他人所指出的那样,鉴于真值表,对逻辑的基本熟悉应立即产生函数!xor

但是,如果你拿真相表并将其绘制为卡诺图,它看起来像:


        v2
       f   t 
     ---------
 v  f| t | f |
 1  t| f | t |
     ---------

功能如下:!v1!v2 || v1v2,如果你再次看2 variable karnaugh map examples,可以看出简化为! xor

不可否认,2个变量卡诺图可能最好用普通的逻辑运算来处理,熟悉和记忆。但是当扩展到超过2个变量时,卡诺图非常有启发性 - 你应该研究它们。

答案 3 :(得分:2)

使用XOR运算符(^):

boolean result = !(v1 ^ v2)

答案 4 :(得分:-2)

简单的方法是,如果两个变量相等则应该为真,如果任何一个为假,则为假。 检查一下。

if(v1 == v2)
    return true;
else 
    return false;

答案 5 :(得分:-3)

if(v1 == v2) 
return true; 
else 
return false;

答案 6 :(得分:-4)

为什么不比较两者?

if(v1 == v2) result = true;