Java程序不断崩溃

时间:2017-10-19 01:12:26

标签: java

当我运行它时,它会继续崩溃,它是一个palindrom测试器(如果一个单词是相同的拼写向前和向后),我希望它删除任何非单词字符并成为小写。谁能发现问题?还是给点建议?我试图避免使用任何“尝试”“为”东西等..只是和项目的if语句。这是我的输出:

输入可能的回文: 船尾 这是:大便 线程“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");
      }

    }


  }

}

1 个答案:

答案 0 :(得分:1)

变化:

right = str.length() - 1;

为:

right = finalPalindrom.length() - 1;