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

Java字符串反转问题求助:无法得到预期输出nadnahc.iar

问题分析与修正代码

原代码存在两处关键问题:

  • 循环条件i>0会跳过索引为0的字符,导致反转结果缺失第一个字符
  • 代码逻辑是反转整个字符串,但你的需求是将.分隔的前后两段分别反转后再拼接,因此逻辑不匹配

正确实现代码

实现思路

  1. 将原字符串按.分割为前后两部分
  2. 分别反转这两个子字符串
  3. 用.将反转后的子字符串拼接,得到最终结果
public class StringReverse {
    public static void main(String[] args) {
        String str = "chandan.rai";
        System.out.println("Original word: " + str);
        
        // 按点分割字符串,注意转义
        String[] parts = str.split("\\.");
        // 反转第一部分
        String reversedFirst = reverseString(parts[0]);
        // 反转第二部分
        String reversedSecond = reverseString(parts[1]);
        // 拼接结果
        String rev = reversedFirst + "." + reversedSecond;
        
        System.out.println("Reversed word: " + rev);
    }
    
    // 通用的字符串反转方法
    private static String reverseString(String s) {
        StringBuilder sb = new StringBuilder(s);
        return sb.reverse().toString();
    }
}

替代实现(不分割字符串的写法)

如果不想分割字符串,也可以直接定位.的位置,分别反转前后段:

public class StringReverse {
    public static void main(String[] args) {
        String str = "chandan.rai";
        System.out.println("Original word: " + str);
        
        StringBuilder sb = new StringBuilder();
        int dotIndex = str.indexOf('.');
        
        // 反转点前面的部分
        for (int i = dotIndex - 1; i >= 0; i--) {
            sb.append(str.charAt(i));
        }
        // 添加点
        sb.append('.');
        // 反转点后面的部分
        for (int i = str.length() - 1; i > dotIndex; i--) {
            sb.append(str.charAt(i));
        }
        
        String rev = sb.toString();
        System.out.println("Reversed word: " + rev);
    }
}

输出结果

运行上述代码后,会得到预期的输出:

Original word: chandan.rai
Reversed word: nadnahc.iar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:55:09