首页 > 解决方案 > 反转二维数组中字符串的顺序 - Java

问题描述

我正在尝试反转数组中字符串的顺序。我收到错误:索引 3 超出长度 1 的范围。如果我使用数字但不适用于单词,这适用于 int。你能帮帮我吗?

public class Main {

    public static void main(String[] args) {
    // write your code here


        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);
    }
}

标签: javaarraysreverse

解决方案


将Java中的二维数组视为由行和列组成的矩阵。为了找出有多少行arr,请使用以下代码。

arr.length

你会发现这将返回 4。

要获取 中的第一行arr,请使用以下代码。

arr[0]

同样,要获取第二行,请使用以下代码。

arr[1]

尽管在您问题的代码中,每一行都有一列,但每一行可能有不同数量的列。

要获取第一行的列数,代码是

arr[0].length

要在二维数组中获取单个元素,您需要按此顺序同时使用行索引和列索引。因此,要获取第一行第一列中的元素,请使用以下命令

arr[0][0]

由于第一行只有一列,因此以下将导致 aArrayIndexOutOfBoundsException被抛出。

arr[0][1]

这解释了为什么arr[0][3]给你一个错误。您正在尝试访问第一行第四列中的元素,但第一行只有一列。

以下代码将提供您想要的结果。

String[][] arr = {{"My"}, {"name" }, {"is"}, {"John"}};
int rows = arr.length;
System.out.println("rows = " + rows);
for (int i = 0; i < rows; i++) {
    System.out.println("row " + i + " columns = " + arr[i].length);
}

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);

运行上面的代码会产生以下结果。

rows = 4
row 0 columns = 1
row 1 columns = 1
row 2 columns = 1
row 3 columns = 1
JohnisnameMy

推荐阅读