Java操作符用于检查两个条件中是否有一个为假,但不能同时为假或同时为真。

6

在Java中是否有一种运算符,如果两个条件都为真或假,结果为true,但如果其中一个条件为假,则结果为false?

我有一些代码依赖于用户输入一些值来运行进程。由于用户只能输入x或y,而不能同时输入或不输入任何值,因此我希望在这种情况下显示错误消息。

1个回答

24
你想要 XNOR,基本上是这样的:
if (!(a ^ b))
或者(更简单地说)
if (a == b)

其中ab是条件。

示例代码:

public class Test
{
    public static void main(String[] args)
    {
        xnor(false, false);
        xnor(false, true);
        xnor(true, false);
        xnor(true, true);
    }

    private static void xnor(boolean a, boolean b)
    {
        System.out.printf("xnor(%b, %b) = %b\n", a, b, a == b);
    }
}

生成如下真值表;

xnor(false, false) = true
xnor(false, true) = false
xnor(true, false) = false
xnor(true, true) = true

Jon,在这种情况下,显示XOR运算符的完整逻辑表可能会有益处。我想在这里做,但是对于此,注释格式很糟糕。 - jdmichal
@James:我用更简单的方式编辑了这个——等于运算符! - Jon Skeet
另外,是的,!=更简单。但是在这种情况下,!XOR是正确的布尔运算符。所以我仍然最喜欢你的答案。 - jdmichal
@Andrew:我不明白你的意思。true ^ true 是 false,所以 !(true ^ true) 是 true。我从来没有写过“and”。你能澄清一下吗? - Jon Skeet
2
这个问题是在Java的上下文中提出的。在Java中,符号“^”表示位运算异或。 - jdmichal
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接