You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用数组判断给定字符串是否为回文的问题求助

用String类结合数组判断回文的正确实现

先指出你原代码里的几个核心问题:

  • 你的for循环只是打印索引值,完全没生成反转数组
  • 用getBytes()转字节数组存在编码风险(比如UTF-8下多字节字符会乱码),直接转字符数组更靠谱
  • 未正确构建反转后的字符串,导致res变量未定义

下面是修正后的完整代码,完全基于String类和数组实现:

import java.util.Scanner;

public class ClassA {
    void meth1() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the string to be checked to see if it's a palindrome.");
        String s = sc.next();
        
        // 将字符串转为字符数组,直接对应每个字符
        char[] originalChars = s.toCharArray();
        // 创建和原数组长度一致的反转字符数组
        char[] reversedChars = new char[originalChars.length];
        
        // 倒序遍历原数组,把字符存入反转数组
        for (int i = 0; i < originalChars.length; i++) {
            reversedChars[i] = originalChars[originalChars.length - 1 - i];
        }
        
        // 用反转字符数组构建新字符串
        String res = new String(reversedChars);
        
        // 比较原字符串和反转后的字符串
        if (s.equals(res)) {
            System.out.println("It is a palindrome");
        } else {
            System.out.println("It is not a palindrome");
        }
        
        sc.close(); // 记得关闭Scanner资源
    }
    
    public static void main(String[] args) {
        new ClassA().meth1();
    }
}

关键细节说明:

  1. 替换getBytes()为toCharArray():字符数组直接映射字符串的每个字符,不会出现编码导致的字节不匹配问题,更适合回文判断场景。
  2. 正确生成反转数组:通过for循环,原数组的最后一个元素对应反转数组的第一个元素,依次完成倒序赋值。
  3. 构建反转字符串:利用String(char[])构造方法,将反转后的字符数组转为字符串,再和原字符串做相等性判断。

如果需要忽略大小写判断(比如把"RacecaR"和"racecar"视为相同),只需把比较语句改成:

if (s.equalsIgnoreCase(res)) {

内容的提问来源于stack exchange,提问作者Pasha Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:03:14