2013-02-15 86 views
2

下面我把兩個數組中,並比較它們的代碼。當它們都相同時,我會得到正確的消息顯示,但當它錯誤時,這兩個消息都會顯示。在最後if語句來顯示的System.out.println(「一致」);即使在布爾錯誤時,也總是顯示出來。爲什麼是這樣????布爾語聲明不起作用?

public static void compareArrays(int[] a, int[] n){ 

    boolean b = false; 
    for (int i = 0; i < n.length; i++) { 
    if (n[i] == a[i]) { 
     b = true; 
    } else { 
     b = false; 
     System.out.println("different"); 
     break; 
    } 
    } 

    if (b = true){ 
    System.out.println("identical"); 
    } 
} 
+0

+1抵消downvote,因爲我不認爲這是值得做的。這顯然是被問到的,我不確定我會尋找什麼來尋找這個問題的答案作爲一個沒有經驗的程序員。 – Medo42 2013-02-15 17:22:47

+0

@ Medo42謝謝 – user2052514 2013-02-15 17:24:41

+2

-1。這很令人困惑,你明顯改變了這個問題。而是讓問題出現錯誤,並將答案標記爲已接受。修復錯誤在您的IDE,但;) – jlordo 2013-02-15 17:26:35

回答

4

=是一個賦值操作符。 ==是平等運算符。

if (b = true){ 

應該

if (b ==true){ 

b是布爾簡單:

if(b) { 
12

更改此:

if (b = true){ 
    System.out.println("identical"); 
} 

到:

if (b == true){ 
    System.out.println("identical"); 
} 

或更好

if (b){ 
    System.out.println("identical"); 
} 

您分配一個值,而不是比較。

+1

+1對於「更好」部分。 – NominSim 2013-02-15 17:20:23

1

那麼,你不會比較b爲真,但設置它在if語句執行之前。

更改if語句要麼if(b == true)或者乾脆if(b)

+0

乾杯這麼簡單 – user2052514 2013-02-15 17:27:08