2014-10-06 2 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

+0

첫 번째 단계는 그 의미를 조사해야합니다. – krillgar

+2

이 계산을 종이에하십시오 (인덱스는 0부터 시작합니다). – Pshemo

답변

2

인덱스 범위를 벗어난 오류는 정확하게 말합니다. Java String (배열 또는 콜렉션)의 유효한 인덱스 범위는 0부터 length() - 1까지입니다. iline.length()에서 뺄 때 i0 인 경우 범위를 벗어난 line.length()을 얻을 수 있습니다. 이것은 하나씩 잘못된 오류입니다.

두 번째 문자의 인덱스에서 더 이상 빼서 경계에 머 무르십시오.

+0

고쳐 주신 덕분에 – Jack

5

가장 쉬운 방법 인 경우 문자열을 반전하고 원래 문자열과 비교하는 것입니다.

3

line.length()는 문자열의 실제 길이를 반환합니다. 첫 번째 반복

3 - 0 -> 3 

될 것입니다

length() - i 

하고있는 때문에

'foo' -> length = 3 

문자는 오프셋 (offset)에게> 2

0-이 당신이 일을 끝낼

string.charAt(3) 

존재하지 않습니다.

+0

첫 번째 색인이 0 대신 하나 인 경우 내 인생이 훨씬 쉬워 질 것입니다. – Jack

+1

@ 잭 아니, 그렇지 않을거야. * 첫 번째 인덱스가 0 * ​​대신 1 인 경우 수명이 1 : D만큼 간단하게 상쇄됩니다 –

관련 문제