0

在过去的几个小时里,我一直在尝试解决这个问题,但没有成功,在这里我应该将一个多维数组从 main 方法传递给另一个方法:

    public static int[] CalcAllRowSums(int[][] a)
{
    int[] p = {a.length}; 
    int x = 0;
    int sum = 0;

    for ( int r = 0; r < a.length; r++ ) {

        for ( int c = 0; c <= a[x].length-1; c++ ) {
            sum += a[x][r];
        }
        p[x] = sum;
    }
    return p;
}

我就是这样做的,但是当我从主方法中打印出方法时,我得到的是地址而不是实际的数组。

谢谢

4

2 回答 2

8

您需要使用Arrays.toString()来打印数组的字符串表示形式。

样本 :

System.out.println("Fourth Question " + 
                    Arrays.toString(TwoD.CalcAllRowSums(array)));

但是你为什么要返回int[]而不是平原int呢?

于 2013-05-27T12:03:02.053 回答
1

没有多维数组之类的东西,只有数组数组。主数组的每一行都包含一个数组(可能长度不同)

首先,您确定要将数组长度存储在数组中:int[] p = {a.length};?如果要创建一个 a.length 的数组,只需编写int[] p = new int[a.length];.

其次,正如 The New Idiot 所说,如果您想对数组进行字符串表示,请使用Arrays.toString(int[]) 。

在下面的示例中: System.out.print(rowSums)返回数组的地址,如[I@4ad6be89 System.out.print(Arrays.toString(rowSums))返回字符串表示,如[1,3,42]

这是一个例子:

public static int[] sumEachRows(int[][] array) {
    int[] rowSums = new int[array.length];

    for (int x = 0; x < array.length; x++) {
        rowSums[x] = sumOfArray(array[x]);
    }
      System.out.println(rowSums);
      System.out.println(Array.toString(rowSums));
    return rowSums;
}

public static int sumOfArray(int[] array) {
    int sum = 0;
    for(int element: array)
        sum += element; 
    return sum;
}
于 2013-05-27T13:04:25.153 回答