2013-05-27 108 views
0

我一直试图解决这个问题,过去几个小时没有运气,在这里我应该从主方法传递一个多维数组,到另一个方法这就是:Java - 返回一个包含多维数组的数组

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方法打印出来的方法,我得到的地址,而不是实际的数组。

感谢

回答

8

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

样品:

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

但为什么要退int[],而不是一个简单的int

+0

它没有工作,我在哪里需要把.toString()?这是我的主要方法: public static void main(String [] args) System.out.println(“Fourth Question”+ TwoD.CalcAllRowSums(array)); } –

+0

@JackOsborn无论你试图打印你的数组,如果你的数组被命名为x。然后使用'System.out.println(Arrays.toString(x));' – Adarsh

+0

现在我得到找不到变量数组,这是我实际上没有得到的部分 –

1

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

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

其次,如新白痴所说,如果您想要对数组进行字符串重新表示,请使用Arrays.toString(int[])

在我下面的例子: System.out.print(rowSums)回报像[[email protected] 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; 
}