2017-10-19 164 views
-4

不斷崩潰當我運行它,它是一個迴文測試器(如果一個字是相同的拼寫向前和向後),我希望它刪除任何非單詞字符,併成爲小寫字母。任何人都可以發現問題嗎?或者提供一些提示?即時通訊試圖避免使用任何「嘗試」「東西」等。只是當和如果一個項目的聲明。這裏是我的輸出:Java程序不斷崩潰

輸入一個可能的迴文: p.oop 那就是:船尾 異常線程「main」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:4 在java.lang中。 String.charAt(來源不明) 在Driver.main(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.String.charAt(未知來源) \t在Driver.main(Driver.java 4 \t: 異常在線程 「主」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:27) – Peder

回答

0

變化:

right = str.length() - 1; 

到:

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

哦,我的天啊,我怎麼錯過了..非常感謝你的朋友! – Peder

+0

不客氣。有好的學習。 – Doleron