实现一个需要3个布尔args

时间:2015-06-22 19:02:42

标签: java

我正在学习“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;

    }

我可以用不同的方式实现这个吗?

2 个答案:

答案 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;
}