首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java打印长字符串回文:删除空格和标点符号时可能出错

用Java打印长字符串回文:删除空格和标点符号时可能出错
EN

Stack Overflow用户
提问于 2015-09-24 00:18:59
回答 1查看 105关注 0票数 0

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

这是我的密码:

代码语言:javascript
复制
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循环中搞砸了一些东西--但我仍然无法弄清楚。输入“一个人,一个计划,一个运河巴拿马”导致“一个人,一个计划,一个运河巴拿马不是回文”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 00:24:23

有两件事:

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

代码语言:javascript
复制
s = resultString;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32751467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档