在Java中打印长字符串回文:错误可能是删除空格和标点符号



尝试测试多字回文,如"一个人,一个计划,一条巴拿马运河"。我想创建一个字符串来保存输入字符串的小写版本,然后创建一个结果字符串来保存字母-要检查是否有回文。然后循环遍历小写字符串中的每个字符,以确定该字符是否是字母,如果该字符是字母,则将其添加到结果字符串中。

这是我的代码:

import java.util.Scanner;
public class PalindromeCheck {
private static char resultString;
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a String: ");
    String s = input.nextLine();
    s = s.toLowerCase();
    String resultString = " ";
    for (int i = 0; i < s.length(); i++) {
        if (Character.isLetter(s.charAt(i)))
            resultString += s.charAt(i);
    }

    int low = 0;
    int high = s.length() - 1;
    boolean isPalindrome = true;
    if (high >= 0)  {

    while (low < high) {
        if (s.charAt(low) != s.charAt(high)) {
            isPalindrome = false;
            break;
        }
            low++;
            high--;
        }
    }
    else {
        isPalindrome = false;
    }
    if (isPalindrome)
        System.out.println(s + " is a palindrome. ");
    else 
        System.out.println(s + " is not a palindrome. ");

    }
}

当我运行我的代码时,空格和标点符号没有被删除,所以我有一种感觉,我在第一个for循环中搞砸了什么-但我仍然不能弄清楚它。输入"一个人,一个计划,一条运河巴拿马",结果是"一个人,一个计划,一条运河巴拿马不是回文。"

两件事:

你正在测试s,它还没有删除标点符号,当resultString已经删除了标点符号。添加

s = resultString;

resultString初始化为空格字符" ",这会干扰回文测试。将其初始化为空字符串""