如果 3 个参数中只有 1 个为真,则返回真 [关闭]
Posted
技术标签:
【中文标题】如果 3 个参数中只有 1 个为真,则返回真 [关闭]【英文标题】:Return true if only 1 parameter out of 3 is true [closed] 【发布时间】:2018-06-09 12:50:19 【问题描述】:我有 3 个数组,如果 3 个数组中只有 1 个不为空,我想传递一个 if 语句。如果只有 1 个不为空而其他 2 个为空,我只想通过它。
现在我有一个疯狂的 if 语句,想知道它是否可以简化
if((a && !b && !c) || (!a && b && !c) || (!a && !b && c))
【问题讨论】:
var bob = new int[] a, b, c; var oneMatch = bob.Count(z => z.Length > 0) == 1;
将int
更改为您的类型。 我假设您的数组名为 a
、b
和 c
。
你一直使用it
和it
这个词很难理解你指的it
是什么。其次,您的代码实际上没有意义.. a b c
是什么?如果它们是数组,它们就没有意义。
我在想,让a
、b
、c
等于1
如果为真,0
否则,然后添加它们。检查总和是否为1
。
XOR of three values的可能重复
a、b 和 c 是数组还是布尔值?
【参考方案1】:
假设a
、b
和c
是布尔值,其值指示对应的数组是否为空:
(a ^ b ^ c) && !(a && b && c)
如果您按顺序对三个布尔值进行异或运算,当且仅当只有一个变量为真或三个变量都为真时,它才会为真。因此,表达式的第二部分,以消除所有三个变量都为真的情况。
【讨论】:
以上是关于如果 3 个参数中只有 1 个为真,则返回真 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章