2015-07-20 19 views
-2

我正在比较一个主要方法内的字符串的值,但是,它一直说它是无效的。主要方法里面这个字符串比较有什么问题?

下面是代码:

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

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

'!a.equalsIgnoreCase(“Z”)'总是如此。 – chengpohi

+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")是假的。
  • 由于第一个条件是错误的,它会评估第二个条件。
  • a.equalsIgnoreCase("Z")为假,!a.equalsIgnoreCase("Z")为真。
  • 第二个条件成立,因此打印出“无效”。

注:也许你应该让我们知道你正在努力实现与字符串比较的东西,使我们可以给你更好的反馈。让我们知道什么是理想的逻辑,即什么是有效的,什么不是。


基于注释“任何字母,是不是等于‘X’或‘Z’应该是无效的”,
答:

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

或其等价物(如建议快速蜗牛):

if(!a.equalsIgnoreCase("X") && !a.equalsIgnoreCase("Z")) { 
    System.out.println("Invalid"); 
} 
  • ¬(X∨Z)≡¬X∧¬Z(德·摩根定律)
+0

谢谢你们。任何不等于“X”或“Z”的字母应该是无效的。 –