2016-01-28 164 views
1

我必須通過使用isPalindrom()方法比較數組中的布爾值。如果數組是或不是迴文,我不能讓我的程序準確地返回答案。當我使用非迴文答案時,它總是返回true而不是false。 代碼:布爾數組值比較

public Boolean isPalindrome() 
{ 
    Boolean result = true; 
    for(int i=0;i<bits.length;i++) 
    { 
     Boolean a = bits[i]; 
     Boolean b = bits[bits.length - i - 1]; 
     if(a!=b) 
      result = false;  
    } 
    return result;  
} 
+1

對於初學者來說,你爲什麼用'Boolean'? – chrylis

+0

對於作業而言,它顯然使得將數組作爲迴文比較容易。 –

+0

相當快,你會想要了解包裝類型('Boolean')和原語('boolean')之間的區別。除非你把它放到一個集合中,否則幾乎沒有理由使用'boolean'的包裝器。 – chrylis

回答

1

嘗試下面的代碼:

public class TestC { 

    public static void main(String[] args) { 
     Boolean[] bits = { Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, 
       Boolean.FALSE }; 
     Boolean[] bits1 = { Boolean.TRUE, Boolean.TRUE, Boolean.TRUE, 
       Boolean.TRUE }; 
     Boolean[] bits2 = { Boolean.FALSE, Boolean.TRUE, Boolean.FALSE }; 
     System.out.println(isPalindrome(bits)); 
     System.out.println(isPalindrome(bits1)); 
     System.out.println(isPalindrome(bits2)); 

    } 

    public static Boolean isPalindrome(Boolean[] bits) { 
     Boolean result = true; 
     for (int i = 0; i < bits.length; i++) { 
      Boolean a = bits[i]; 
      Boolean b = bits[bits.length - i - 1]; 
      if (a != b) 
       result = false; 
     } 
     return result; 
    } 
} 
+0

不能在布爾isPalindrome方法中使用靜態方法,我不得不在獨立的類中創建一個構造函數,以便在主類中使用。這個靜態方法只是拋出了serval不匹配。 –

1

也許使用整數類型(如果值都是數字)會更好地工作比Boolean對於(一)和(b)?

public Boolean isPalindrome() 
    { 
     Boolean result = true; 
     for(int i=0;i<bits.length;i++) 
     { 
      int a = bits[i]; 
      int b = bits[bits.length - i - 1]; 
      if(a!=b) 
       return false;  
     } 
     return true;  
    } 
+0

仍然沒有解決我的問題,我知道它只是在我張貼的代碼行。因爲當我在if語句中將返回值更改爲false時,它會將該數組解釋爲不是迴文。 –

+0

而不是將true/false存儲在變量中,爲什麼不在發現不匹配時簡單地返回false,然後在最後返回true ...我相應地更新了我的解決方案。 – LuvnJesus

+0

這仍然沒有解決問題。我嘗試過所有不同類型的比較值,甚至使用compareTo和ect。如果它是或不是迴文,它將不會正確返回。 –

1

,而不是!=使用下面的代碼

如果(!(a.Equals(B)))

希望工程。

+0

不幸的是,這並沒有改變它... –

0

該方法看起來是正確的,即使它不是最優化/高效的方法。它應該爲迴文測試返回正確的真/假。你能提供你正在測試的一組輸入嗎?

+0

我只是使用一個數組,我通過布爾變量通過構造函數從主類中調用它的位。 –

+0

您的代碼適用於布爾數組,例如布爾[]數組。你能展示更多的代碼,你如何定義和傳遞數組? –