Java - 返回包含多维数组的数组

时间:2013-05-27 12:01:29

标签: java arrays

我一直试图在过去的几个小时内解决这个问题而没有运气,这里我应该将主方法中的多维数组传递给另一种方法:

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

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

感谢

2 个答案:

答案 0 :(得分:8)

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

示例:

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

但为什么要返回int[]而不是普通的int

答案 1 :(得分:1)

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

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

其次,正如The New Idiot所说,如果你想对你的数组进行String重新表示,请使用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;
}