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

如何在Java中创建逆序字符数组?解决StringIndexOutOfBoundsException索引越界错误

解决Java中创建逆序字符数组时的StringIndexOutOfBoundsException错误

嗨,我来帮你拆解一下这个错误的根源,以及怎么修复它。

你遇到的StringIndexOutOfBoundsException是因为代码里两处索引边界处理出错了:

错误原因分析

  1. 字符串索引越界:Java里字符串的索引是从0开始的,你的字符串"7289347928"长度是10,有效索引范围是0到9。但在langeZahl方法里,你写了a.charAt(a.length() - i)——当循环变量i=0时,这个表达式就变成a.charAt(10),而字符串根本没有索引为10的字符,直接触发了异常。

  2. 数组索引越界:你创建的char数组长度是len(也就是10),它的有效索引同样是0到9。但你的循环条件写的是i <= len,这意味着循环会执行到i=10,此时array[i]会访问数组的第10个位置,超出了数组的边界范围。

修正后的代码

我把这两处错误都修复了,你可以直接运行下面的代码:

public class rechner2 { 
    static String a = "7289347928";
    public static void main(String[] args) { 
        for (int i = 0; i < a.length(); i++) { 
            System.out.println(langeZahl(a)[i]); 
        } 
    } 
    private static char[] langeZahl(String a) { 
        if (a == null) { 
            return null; // 或者可以返回new char[0],避免调用方处理NullPointerException
        } 
        int len = a.length(); 
        char[] array = new char[len]; 
        // 修正循环条件和索引计算逻辑
        for (int i = 0; i < len; i++) { 
            // 用len-1-i来取逆序的字符:i=0取最后一位,i=len-1取第一位
            array[i] = a.charAt(len - 1 - i); 
        } 
        return array; 
    } 
}

额外小技巧

如果你不想手动处理循环和索引,Java自带的工具类可以帮你一行搞定逆序字符数组:

char[] reversedArray = new StringBuilder(a).reverse().toString().toCharArray();

这种方式更简洁,也不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:47:47