有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java程序不断崩溃

当我运行它时,它一直崩溃,这是一个回文测试程序(如果一个单词前后拼写相同),我希望它删除任何非单词字符并变成小写。有人能发现问题吗?或者给点建议?我尽量避免使用任何“try”“for”之类的东西。。项目的while和if语句。以下是我的输出:

输入可能的回文: p、 哎呀 给你:大便 线程“main”java中出现异常。lang.StringIndexOutOfBoundsException:字符串索引超出范围:4 在爪哇。lang.String。字符(未知源) 在司机那儿。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) 个答案

  1. # 1 楼答案

    更改:

    right = str.length() - 1;
    

    致:

    right = finalPalindrom.length() - 1;