带有compareToIgnoreCase的Java逻辑| |

带有compareToIgnoreCase的Java逻辑| |,java,Java,在我的程序中,我使用以下if语句: final String single = "single"; final String married = "married"; //status is equal to what the user inputted, also a string if((status.compareToIgnoreCase(single) != 0) || (status.compareToIgnoreCase(married) != 0)){ System

在我的程序中,我使用以下if语句:

final String single = "single";
final String married = "married";
//status is equal to what the user inputted, also a string
if((status.compareToIgnoreCase(single) != 0) || (status.compareToIgnoreCase(married) != 0)){
        System.out.println("Does not equate");
    }

以了解用户输入的内容。当状态更改为“单一”或“单一”时,程序返回“不等同”。当状态相等时,为什么显示“不相等”行?

您的条件是相互排斥的。两个条件中的一个总是正确的。ie:如果身份是已婚,那么就不是单身。如果身份是单身,那么就不是已婚

我不完全确定您要测试什么,但更可能的情况是:

if((!status.equalsIgnoreCase(single) && (!status.equalsToIgnoreCase(married))){
        System.out.println("Does not equate");
    }

您的逻辑or使表达式始终为
true
,您需要一个逻辑的

if ((status.compareToIgnoreCase(single) != 0) && 
    (status.compareToIgnoreCase(married) != 0))
,您可以应用DeMorgan变换并获得

if ((status.compareToIgnoreCase(single) == 0) || 
    (status.compareToIgnoreCase(married) == 0))

使用逻辑运算符时,真值表的一个很好的参考。
Eric B.的回答很好,我只是无法评论他的回答

单曲
!=
已婚
…其中一个条件必须失败…我认为
字符串#equalsIgnoreCase
会更简单…当状态为“单身”时,
…IgnoreCase(已婚)
失败。。。谢谢我是从另一个角度看的,我想我需要重新审视一下我的逻辑——谢谢你的帮助。