Java逻辑|| with compareToIgnoreCase

时间:2014-10-23 02:32:06

标签: 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.out.println("Does not equate");
    }

找出用户输入的内容。当状态更改为“单个”或“单个”时,程序将返回“不等于”。为什么在状态相等时显示“不等于”线?

3 个答案:

答案 0 :(得分:2)

您的情况是相互排斥的。这两个条件中的一个总是正确的。即:如果地位已婚,那么它不是单身。如果状态是单身,那么它就没有结婚。

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

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

答案 1 :(得分:0)

您的逻辑或导致表达始终为true,您需要逻辑and

if ((status.compareToIgnoreCase(single) != 0) && 
    (status.compareToIgnoreCase(married) != 0))

,您可以应用DeMorgan变换并获取

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

答案 2 :(得分:0)

使用逻辑运算符时对真值表的一个很好的参考。 http://kias.dyndns.org/comath/21.html Eric B.的答案很好,我无法评论他的评论。