2017-10-19 1 views
-4

은 palindrom 테스터를 실행하면 충돌이 계속 발생하며 (단어가 같은 철자이면 앞뒤로 쓰는 경우), 단어가 아닌 문자를 모두 제거하고 소문자로 바꾸기를 원합니다. 누구든지 문제를 발견 할 수 있습니까? 또는 몇 가지 팁을 주시겠습니까? 메신저 "물건"등 "에 대한" "시도"를 사용하지 않으려 고. 그냥 동안 프로젝트에 대한 진술.Java 프로그램이 계속 충돌합니다.

이 가능한 회문를 입력 : 여기 내 출력 p.oop 여기 이 있습니다 : 스레드에서 예외 똥 "주요"java.lang.StringIndexOutOfBoundsException : 문자열 색인이 범위를 벗어 : java.lang의에서 4 . Driver.main에서하면 String.charAt (알 수없는 소스) (Driver.java:27)

import java.util.*; 


public class Driver 
{ 

    public static void main(String[] args) 
    { 

    String str, another = "y"; 
    int left, right; 

    Scanner scan = new Scanner(System.in); 

    while (another.equals("y")) 
    { 
     System.out.println("Enter a possible palindrome : "); 
     str = scan.nextLine(); 
     String palindromToLowerCase = str.toLowerCase(); 
     String finalPalindrom = palindromToLowerCase.replaceAll("\\W", ""); 
     left = 0; 
     right = str.length() - 1; 

System.out.println("here it is : " + finalPalindrom); 

     while (finalPalindrom.charAt(left) == finalPalindrom.charAt(right) && left < right) 
     { 
      str.toLowerCase(); 
      left++; 
      right--;   
     } 
     System.out.println(); 

     if (left < right) 
     { 

     System.out.println("that string is NOT a palindrom"); 
     } 

     else 
     { 
     System.out.println("This string IS a palindrom"); 
     } 

    } 


    } 

} 
+0

충돌로 인한 결과는 무엇입니까? 예외가 발생 했습니까? – Logan

+0

내 exeption가 발생합니다 : "주"java.lang.StringIndexOutOfBoundsException 스레드 예외 : 문자열의 인덱스 범위를 벗어 : 4 \t java.lang.String.charAt (알 수없는 소스) Driver.main에서 \t (Driver.java에서 : 27) – Peder

답변

0

변화 :

right = str.length() - 1; 

에 :

right = finalPalindrom.length() - 1; 
+0

오, 세상에 내가 어떻게 그리워 했니? – Peder

+0

당신은 오신 것을 환영합니다. 좋은 연구를해라. – Doleron

관련 문제