在Java中将2个数组合并成二维数组

3

你好,我正在尝试将两个数组合并成一个二维数组。但是,我一直在遇到错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
 at test5.sum(test5.java:12)
 at test5.main(test5.java:38)

这是我的代码:
public class test5 {
    int[][] final23;

    public int[][] sum(int[] x, int[] y) {
        final23 = new int[2][x.length];
        for (int i = 0; i < final23[i].length; i++) {

            final23[1][i] = x[i];
            final23[2][i] = y[i];
        }
        return final23;
    }

    public void print() {
        for (int i = 0; i < final23[i].length; i++) {
            for (int j = 0; j < final23[i].length; j++) {

                System.out.print(final23[i][j] + " ");
            }
        }
    }

    public static void main(String[] args) {
        int l[] = { 7, 7, 3 };
        int k[] = { 4, 6, 2 };
        test5 X = new test5();

        X.sum(k, l);
        X.print();
    }
}

我不太确定问题是什么。如果问题比较简单,请见谅,因为我是编程新手!

3个回答

5
问题是:
final23 [2][i] = y[i];

Java数组的起始索引总是从0开始。因此,final23只有[0]和[1]。

任何具有n个元素的数组都可以从0到n-1。


1
除了一些基于C语言的编程语言之外,大多数常见的编程语言都支持数组。 - Carlos

3

您的程序还存在第二个问题。在sumprint方法中都有这个循环:

for (int i = 0; i < final23[i].length; i++)

在 sum 方法中应该是:
for (int i = 0; i < final23[0].length; i++)

在打印方法中:
for (int i = 0; i < final23.length; i++)

否则,您将再次收到“ArrayIndexOutOfBoundsException”错误。
请注意,仅当两个输入数组具有相同的长度时,程序才能正常工作。这可能对您的目的来说没有问题,但请记住这一点。

1

尝试一下

for (int i = 0; i < final23[i].length; i++)
 {

  final23 [0][i] = x[i];
  final23 [1][i] = y[i];
 }

记住,所有的数组都是以0为基准的,即使是n维数组也是如此。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接