2016-07-09 3 views
0

문자열이 회문인지 확인하기 위해 다음 프로그램을 발견했습니다. 코더 s.length()-1에 루프 변수를 i를 초기화하는 이유왜 문자열 길이가 -1

import java.util.Scanner; 

public class PalindromeString{ 
    public static void main(String[] args){ 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter the string which you want to check whether that is palindrome or not: "); 
     String s = in.next(); 
     String r = ""; 
     for(int i=s.length()-1; i>=0; i--){ 
      r = r+s.charAt(i); 
     } 
     System.out.println("Reverse of entered string "+s+" is "+r); 
     if(r.equals(s)){ 
      System.out.println("String "+s+" is palindrome."); 
     }else{ 
      System.out.println("String "+s+" is not palindrome."); 
     } 
    } 
} 

나는 이해하지 못했다. 아무도 그 이유를 설명 할 수 있습니까? 문자열 길이에 대한 관련 콘텐츠를 검색했지만 이에 대한 대답을 찾을 수 없습니다.

+0

변수 i가 인덱스로 사용되고 java의 인덱스가 0부터 시작하기 때문에 '-1'이 실행되지 않으면 for 루프의 첫 번째 명령문은 's.charAt (s.length())'가 존재하지 않기 때문에 에러가 발생했습니다 - 이것을 확인하십시오. 이것은 0 기반 인덱스를 사용하는 대부분의 언어에서 중요한 이해입니다. – hbogert

+0

[substring()의 endIndex에서 1을 뺀 이유]의 가능한 복제본 (http://stackoverflow.com/questions/13781907/reason-for-subtracting-substrings-endindex-by-1) – Burkely91

답변

0

문자열 문자 배열하고, 배열의 인덱스 0

길이가 문자 배열 요소의 양이지만 어레이는 0에서 시작하기 때문에 최대 인덱스 요소의 양이부터 카운트를 시작 - 1 ==> .length() -1

0

charAt의 색인은 0에서 시작됩니다. 0이 첫 번째 문자입니다.

이것은 길이가 10 인 문자열을 의미하며 0-9가 아닌 1-10 사이의 문자를가집니다.

0

자바 문자열은 0부터 시작하는 색인을 사용하기 때문입니다. 문자열

즉 문자 색인은 N-1

1

수 charAt의 인덱스 0에서 시작 ... 즉 0이다. 0이 첫 번째 문자입니다.

이것은 길이가 10 인 문자열을 의미하며 0-9가 아닌 1-10 사이의 문자를가집니다.应该 是 这样 子 的

1

예컨대 0

에서 자바 인덱싱 어레이 "안녕하세요"문자열의 길이가 5 인 'H'는 '안녕하세요'문자열의 0 charachter이므로. 에 따르면 'e'문자는 int 1이고 'o'는 4에 있습니다.

문자열의 길이가 5가 아니라는 것을 쉽게 알 수 있으므로 if 우리는 마지막 문자를 원한다. 우리는 길이 -1이 필요하다. 위치.

또한 나는 항상 0에서 시작하여 요소의 요소/수의 크기 아래에 숫자 1을 계속 this

2

자바 (그리고 대부분의 다른 언어) 요소의 인덱스를 살펴 보시기 바랍니다.

String string = "Hello World" 

가 "H"가 문자열의 첫 번째 요소이며, 따라서 인덱스 '0', 즉 캐릭터 [0] = "H"는 "E"는 인덱스 '1'- 문자열 [1] = "e"등으로 표시됩니다. 마지막 요소는 '10'으로 인덱싱됩니다.

따라서 11 개의 요소가있는 배열의 위 예제에서 인덱스는 0에서 10까지입니다 (문자열 길이에서 1 빼기). http://codingbat.com/doc/java-string-introduction.html

문자열을 잊지 마세요 자바에서 문자의 배열, 그래서 조작하고 액세스하는 방법에 대한 추가 정보를 원하시면이 글을 읽을 - (!와 사진을 보유하고 있습니다)

나는이 나보다 그것을 더 잘 설명 생각 배열 - http://tutorials.jenkov.com/java/arrays.html

관련 문제