2017-10-19 6 views
-4

は、私がそれを実行するときにpalindromテスター(単語が同じスペルの順方向と逆方向である場合)がクラッシュし続けるので、単語以外の文字を削除して小文字にしたい。誰も問題を見つけることができますか?またはいくつかのヒントを与える?どんな "試し" "のための"などを使用することを避けようとしています。ここに私の出力は次のようになります。Javaプログラムがクラッシュし続ける

は、可能な回文を入力します。 p.oop はここにある:範囲外の文字列インデックス:java.langでの4 スレッド「メイン」java.lang.StringIndexOutOfBoundsExceptionで 例外をうんち。 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

関連する問題