You need to enable JavaScript to run this app. Java二维数组字符串顺序反转时索引越界错误问题求解
优惠活动
大模型
产品
解决方案
定价
更多

Java二维数组字符串顺序反转时索引越界错误问题求解

问题根因

你对当前二维字符串数组的结构理解有误,触发了数组索引越界:

  • 你定义的String [][] arr = {{"My"}, {"name" }, {"is"}, {"John"}}是4行1列的二维数组:arr[0]对应{"My"},长度仅为1;arr[1]对应{"name"},长度为1,以此类推。
  • 你代码中写的arr[0][3]是尝试取第一行的第4个元素,第一行只有1个元素,自然会抛出Index 3 out of bounds for length 1的异常。

你之前相同逻辑的int类型代码可以正常运行,是因为你当时定义的int二维数组肯定是{{1,2,3,4}}这种1行4列的结构,和当前字符串数组的结构完全不同。

修复方案

提供两种可选的修复方式:

方案1:保持现有数组结构,修改取值逻辑

现有数组是每行存1个字符串,直接按行逆序取值即可:

public class Main {
    public static void main(String[] args) {
        String [][] arr = {{"My"}, {"name" }, {"is"}, {"John"}};
        String arr1 = arr[3][0];
        String arr2 = arr[2][0];
        String arr3 = arr[1][0];
        String arr4 = arr[0][0];
        String arrAll = arr1 + arr2 + arr3 + arr4;
        System.out.println(arrAll);
    }
}

运行输出为JohnisnameMy,符合反转拼接的需求。

方案2:保持现有取值逻辑,修改数组结构

如果你要沿用arr[0][x]的取值写法,把数组改成1行4列的结构即可:

public class Main {
    public static void main(String[] args) {
        String [][] arr = {{"My", "name", "is", "John"}};
        String arr1 = arr[0][3];
        String arr2 = arr[0][2];
        String arr3 = arr[0][1];
        String arr4 = arr[0][0];
        String arrAll = arr1 + arr2 + arr3 + arr4;
        System.out.println(arrAll);
    }
}

运行输出和方案1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 07:06:02