当我运行它时,它会继续崩溃,它是一个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");
}
}
}
}
答案 0 :(得分:1)
变化:
right = str.length() - 1;
为:
right = finalPalindrom.length() - 1;