2014-10-06 90 views
-5
for (int i = 0; i <= (line.length()/2); i++) { \\loops from the first character until the character in the middle 
    if (line.charAt(i) != line.charAt(line.length() - i)) { \\checks if 1st character of line is not equal to the last character, and so on.. 
     System.out.println("Entered string is not a palindrome."); 
     return; \\ends program, no need to check anything else 
    } 
} 
System.out.println("Entered string is a palindrome."); 

我不斷收到一個索引超出範圍的錯誤檢查字符串是迴文

+0

你有沒有谷歌錯誤,努力瞭解它是什麼以及爲什麼發生? – tnw 2014-10-06 19:16:22

+0

你的第一步應該是看看這意味着什麼。 – krillgar 2014-10-06 19:16:24

+2

在紙上做這個計算(記住索引從0開始)。 – Pshemo 2014-10-06 19:16:37

回答

2

索引超出範圍的錯誤正是它所說的。 Java String中的有效索引(也是數組或集合)的範圍爲0length() - 1。當您從line.length()中減去i時,如果i0,仍然可以獲得line.length(),這是超出範圍。這是一個錯誤的錯誤。

減去1更多來自第二個人物的索引以保持界限。

if (line.charAt(i) != line.charAt(line.length() - i - 1)) { 
+0

修正了它,謝謝 – Jack 2014-10-06 19:24:06

5

檢查迴文最簡單的方法是反轉字符串,並將其與原始字符串進行比較。

3

line.length()返回字符串的實際長度,例如:

'foo' -> length = 3 

中的人物有偏移0-> 2

既然你做

length() - i 

你的第一次迭代將是

3 - 0 -> 3 

,你最終會做

string.charAt(3) 

哪些不存在。

+0

如果第一個索引是一個而不是零,那麼我的生活會容易得多。 – Jack 2014-10-06 19:23:46

+1

@Jack不,它不會。 *如果第一個索引是一個而不是零*,那麼您的生活只會被1:D抵消 – 2016-04-01 13:47:32