我正在学习“Sedgewick和Wayne的Java编程跨学科方法”。以下问题给我带来了一些实施挑战。
写一个静态方法odd(),它接受三个布尔输入,如果奇数个输入为真,则返回true,否则返回false。
private static boolean odd(boolean x, boolean y, boolean z)
{
if((x && y) && z)
return true;
else if((x) && !y && !z)
return true;
else if((y) && !x && !z)
return true;
else if((z) && !x && !y)
return true;
else
return false;
}
我可以用不同的方式实现这个吗?
答案 0 :(得分:12)
您可以使用XOR:
private static boolean odd(boolean x, boolean y, boolean z)
{
return x ^ y ^ z;
}
答案 1 :(得分:7)
我认为最简单的方法是将您的布尔值设为int
并添加它们。
private static boolean odd(boolean x, boolean y, boolean z) {
int sum = 0;
if(x) sum++;
if(y) sum++;
if(z) sum++;
// check if its odd.
return sum % 2 != 0;
}