我有两个变量,可以是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;
是否有更好的方法可以做到这一点?
答案 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;