我一直试图在过去的几个小时内解决这个问题而没有运气,这里我应该将主方法中的多维数组传递给另一种方法:
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方法打印出方法时,我得到的是地址而不是实际的数组。
感谢
答案 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;
}