2015-07-20 47 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」的字母應該是無效的。 –