java - 是否可以使用 XOR 来检测多个条件中的一个是否为真?

标签 java boolean-logic xor

例如,

if (bool1 ^ bool2 ^ bool3 ^ bool4)
{
    // Do whatever
}

它应该只在恰好满足其中一个条件时执行。

最佳答案

将 boolean 值作为整数相加并检查它们是否等于 1。

在无法将 boolean 值转换为整数的语言中,例如 Java,更冗长的选项是:

if ((bool1 ? 1 : 0) + (bool2 ? 1 : 0) + (bool3 ? 1 : 0) + (bool4 ? 1 : 0) == 1) {
    // only runs when one of bool 1-4 is true
}

但是,在将 boolean 值转换为整数有效的其他语言中,您可以执行以下操作:

if ((int)(bool1) + (int)(bool2) + (int)(bool3) + (int)(bool4) == 1) {
    // only runs when one of bool 1-4 is true
}

关于java - 是否可以使用 XOR 来检测多个条件中的一个是否为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460307/

相关文章:

java - 在 FXML Controller 类中找不到可注入(inject)字段

java - Wildfly 中的 JASPIC 客户端登录

java - 创建自己的JLabel

c - C 中的字符串异或函数 : How to deal with null characters?

hash - 为什么java hashCode()中经常使用XOR,而其他按位运算符却很少使用?

java - APK 错误中的重复文件

sql - 如果任何源列为真,则将 bool 值聚合为真

optimization - 在评估数据绑定(bind)时, knockout 是否针对逻辑运算符进行优化?

c - 如何格式化代码以便触发 while 循环 C

c - XOR 链表 XOR 函数