main方法中的字符串比较有什么问题?

时间:2015-07-20 02:39:51

标签: java

我正在比较main方法中的字符串值,但是,它继续说它是无效的。

以下是代码:

public static void main(String[] args) {
    String a = "X";

    if(!a.equalsIgnoreCase("X") || !a.equalsIgnoreCase("Z")){
        System.out.println("invalid");
    }
}

1 个答案:

答案 0 :(得分:3)

您的代码没有任何问题。

public static void main(String[] args) {
    String a = "X";

    if(!a.equalsIgnoreCase("X") || !a.equalsIgnoreCase("Z")){
        System.out.println("invalid");
    }
}

<强>解释

  • a.equalsIgnoreCase("X")为真,!a.equalsIgnoreCase("X")为假。
  • 由于第一个条件为false,因此会评估第二个条件。
  • a.equalsIgnoreCase("Z")为false,!a.equalsIgnoreCase("Z")为真。
  • 第二个条件为真,因此打印“无效”。

注意:也许您应该通过字符串比较告诉我们您要实现的目标,以便我们为您提供更好的反馈。让我们知道什么是理想的逻辑,即什么是有效的,什么不是。


基于评论“任何不等于”X“或”Z“的字母应无效”,
答案:

if( !(a.equalsIgnoreCase("X") || a.equalsIgnoreCase("Z")) ) {
    System.out.println("Invalid");
}

或其等价物(由Fast Snail提议):

if( !a.equalsIgnoreCase("X") && !a.equalsIgnoreCase("Z") ) {
    System.out.println("Invalid");
}
  • ¬(X∨Z)≡¬X∧¬Z(De Morgan定律)