我试图计算2d数组中列的平均值,但我无法理解代码。函数应该返回每列的平均值。我无法在函数中打印结果。打印应该是主要功能。
static double average_columns(double matrix[][]) {
int i, j, sum = 0, average=0;
for (i = 0; i < matrix.length; i++) {
for (j = 0; j < matrix[i].length; j++) {
sum=(int) (sum+matrix[i][j]);
}
average=sum/matrix[i].length;
sum=0;
}
return average;
}
4条答案
按热度按时间o7jaxewo1#
如果你假设
NxN
矩阵,可以用流求解:或更具可读性:
对矩阵进行转置,然后使用
Arrays.stream(...).average().getAsDouble()
计算数组的平均值。owfi6suc2#
你可以用
Stream.reduce
方法汇总列中的元素,然后将每个总和除以列数:另请参见:将二维数组中每列的所有元素相加
ncecgwcz3#
你需要退票
double[]
而不是double
从函数中。因为数字是一种类型,
double
,类型sum
应该是double
.如果所有行长度相等:
因为要添加每列的值,所以应该添加
matrix[j][i]
(代替matrix[i][j]
)至sum
因此average[i]
将sum / matrix.length
.演示:
输出:
如果行的长度不同:
您应该首先找到行的最大长度,它将成为
double[] average
.最后,使用两级嵌套循环来计算
average[]
. 外环将到达average.length
内部循环将达到行数。在处理每一列时,使用计数器(例如。int count
)跟踪添加到的值的数量sum
. 在内环的末端,average[i] = sum / count
.演示:
输出:
zaqlnxep4#
这就是如何计算每行和每列的总和和平均值:下面的示例代码将以相同的方法打印总和和平均值,并且不会返回任何值。如果您需要返回实际的总和和平均值,那么您需要返回double[],它将包含所有总和或平均值,而不是double。
代码
输出