2014-08-30 60 views
1

編寫一個方法isPalindrome,它接受一個字符串數組作爲它的參數,如果該數組是一個迴文返回true(如果它向後讀取相同的向前)和/如果if不。例如,數組{「alpha」,「beta」,「gamma」,「delta」,「gamma」,「beta」,「alpha」}是一個迴文,因此將該數組傳遞給您的方法將返回true。有零個或一個元素的數組被認爲是迴文數組。這段代碼對於字符串數組的迴文有什麼問題

public boolean isPalindrome(String[] str){ 
     for (int i =0;i<str.length;i++){ 
      if (str[i]!=str[str.length-1-i]) 
       return false; 
     } 
    return true; 
    } 

它根據練習網站的答案輸入失敗。

isPalindrome({ 「AAY」, 「蜂」, 「CEE」, 「CEE」, 「蜂」, 「AAY」})

isPalindrome({ 「AAY」, 「蜂」, 「CEE」 「東歐」, 「蜜蜂」, 「AAY」})

+0

除了在所述解答的對比作爲其使用equals,可以使用* I sergioFC 2014-08-30 08:17:33

+0

可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – 2014-08-30 08:18:31

+0

write'str [i] .equals (STR [str.length-1-I])' – Nivedita 2014-08-30 08:21:24

回答

2

strString的數組。

要比較String的值,您必須使用String.equals - ==運算符會比較字符串的身份而不是值本身。

public boolean isPalindrome(String[] str){ for (int i=0;i<str.length;i++){ if (!str[i].equals(str[str.length - i - 1])) return false; } return true; }

2

Java中的字符串被視爲與其他對象一樣 - 與!=共同對比引用,而不是值。爲了進行價值比較,您需要使用String.equals方法。

2

該代碼是使用==,其執行對對象的標識進行比較的比較字符串。您需要比較使用string1.equals(string2)的字符串來檢查內容是否相等。

該方法因輸入isPalindrome({"a", "aa".substring(1)})而失敗,因爲兩個字符串相同但不相同。

有關更多詳細信息,請查看How do I compare strings in Java?,其中包含更多示例。

2

嘗試這個代替if (!str[i].equals(str[str.length-1-i]))