布尔逻辑 - 比较三个布尔值
boolean logic - comparing three booleans
我正在尝试构建一种方法来回答以下问题。但是我遇到了一些麻烦。有人可以帮助我理解这个逻辑吗?
编写一个静态方法 odd() 接受三个布尔输入,returns 如果奇数个输入为真则为真,否则为假。
public boolean odd(boolean a, boolean b, boolean c)
{
if((a && b) && (b && c) && (a && c))
return true;
if((a && b) && (b && c) || (a && b) && (a && c))
return false;
return false;
}
我建议你这样做
public boolean odd(boolean a, boolean b, boolean c) {
int count = 0;
if (a) count++;
if (b) count++;
if (c) count++;
return count % 2 != 0;
}
如果你真的想优化它,我想你想要这样的东西
if (a || b || c) {
if (a && b && c) return true;
if (a) return !(b && c);
if (b) return !c;
return c;
}
return false;
一行完成的功能:
return (a&&b&&c) || (a && !b && !c ) || (!a && b && !c ) || (!a && !b && c );
如果您需要使用三个以上的输入,我建议将 ArrayList 发送到函数
odd(ArrayList<Boolean> list)
{
int count = 0;
for(Boolean b : list)
{
if(b.booleanValue()) count++;
}
return (count%2) == 1;
}
public boolean odd(boolean a, boolean b, boolean c) {
return a ^ b ^ c;
}
XOR
也称为奇数函数,这意味着如果奇数个输入为 true
.
,它将 return true
我正在尝试构建一种方法来回答以下问题。但是我遇到了一些麻烦。有人可以帮助我理解这个逻辑吗?
编写一个静态方法 odd() 接受三个布尔输入,returns 如果奇数个输入为真则为真,否则为假。
public boolean odd(boolean a, boolean b, boolean c)
{
if((a && b) && (b && c) && (a && c))
return true;
if((a && b) && (b && c) || (a && b) && (a && c))
return false;
return false;
}
我建议你这样做
public boolean odd(boolean a, boolean b, boolean c) {
int count = 0;
if (a) count++;
if (b) count++;
if (c) count++;
return count % 2 != 0;
}
如果你真的想优化它,我想你想要这样的东西
if (a || b || c) {
if (a && b && c) return true;
if (a) return !(b && c);
if (b) return !c;
return c;
}
return false;
一行完成的功能:
return (a&&b&&c) || (a && !b && !c ) || (!a && b && !c ) || (!a && !b && c );
如果您需要使用三个以上的输入,我建议将 ArrayList 发送到函数
odd(ArrayList<Boolean> list)
{
int count = 0;
for(Boolean b : list)
{
if(b.booleanValue()) count++;
}
return (count%2) == 1;
}
public boolean odd(boolean a, boolean b, boolean c) {
return a ^ b ^ c;
}
XOR
也称为奇数函数,这意味着如果奇数个输入为 true
.
true