2017-12-07 2 views
0

입력 문자열이 palindrome인지 확인하는 프로그램을 만들려고합니다. 마침내 그것을 char 배열로 변환 할 수 있었지만 for 루프의 String에서 마지막 인덱스에 액세스하는 방법을 알 수 없었습니다.for 루프에서 문자열의 마지막 인덱스를 얻는 방법

import java.util.Scanner; 

public class Task8 { 

    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     boolean isPalindrome = true; 

     System.out.println("Please, enter string!"); 
     String str = sc.nextLine(); 
     char[] chars = str.toCharArray(); 

     for (int i = 0; i < chars.length; i++) {    
      if(chars[i]!= chars[chars.length-i-1]){ 
       isPalindrome = false; 
       break; 
      } 
     } 
     if(isPalindrome){ 
      System.out.println("It is palindrome!"); 
     } 
     if(!isPalindrome){ 
      System.out.println("It isnt a palindrome!"); 
     } 
    } 
} 

이가이 작동 것처럼 보이는 최종 결과이지만, 내가 좋아하는 뭔가하려고하면 이클립스가 오류를 반환 : 내가 괄호 (str.charAt(i)!= str.charAt(str.length()-1-i)) 외부 -1-i를 넣어 경우

for(int i = 0; i < str.length(); i++){ 
     if(str.charAt(i)!= str.charAt(str.length(-1-i)){ 
      isPalindrome = false; 
      break; 
     } 
    } 

것은 그것은 작동하는지, 하지만 왜 첫 번째 인덱스에서 중괄호 안에 i을 넣을 수 있으며 마지막 인덱스는 중괄호 안에 i-1을 사용할 수 없습니까?

+1

배열의 요소에 액세스하는 것과 길이 메서드를 호출하는 것 사이에 혼란스러워하고 있다고 생각합니다. 'chars [chars.length-i-1])'는'str.length (-1-i)'와 같지 않다. '[]'와'()'에는 큰 차이가 있습니다. 또한 코드에서 _show 오류가 발생하는 경우 us_합니다. – csmckelvey

답변

2

length() 메서드는 매개 변수를 사용하지 않습니다. 인덱스 매개 변수를 사용하는 메서드는 charAt(...)입니다.

그리고 입력 문자열의 중간까지 가면 충분합니다.

for (int i = 0; i < str.length()/2; i++) { 
    if (str.charAt(i) != str.charAt(str.length() -i - 1)) { 
     isPalindrome = false; 
     break; 
    } 
} 
0

str.length(-1-i)str.length() API는 인수를 허용하지 않습니다, 올바른 구문되지이며 유일한 목적은 당신에게 주어진 문자열의 길이를 제공하는 것입니다이다.

관련 문제