java二维数组列相加_java – 二维数组中的列总和

你的外部for循环条件给你带来了问题.这是你的循环: –

for (int i = 0; i < array[i].length; i++)

现在,当我达到值3时,您正在尝试访问数组[3] .length.这将抛出IndexOutOfBounds异常.

由于每个内部数组的大小相同,您可以将循环更改为: –

for (int i = 0; i < array[0].length; i++)

或者,更好的是,只需将数组[0] .length存储在某个变量中.但这不会产生太大的影响.

我还建议你使用更好的方法来计算列的总和.避免首先迭代行.保持迭代是正常的,可能是这样的: –

public double[] columnSum(double [][] array){

int size = array[0].length; // Replace it with the size of maximum length inner array

double temp[] = new double[size];

for (int i = 0; i < array.length; i++){

for (int j = 0; j < array[i].length; j++){

temp[j] += array[i][j]; // Note that, I am adding to `temp[j]`.

}

}

System.out.println(Arrays.toString(temp));

return temp; // Note you are not using this return value in the calling method

}

因此,您可以看到您的问题如何高度简化.我所做的是,不是将值赋给数组,而是将array [i] [j]的新值添加到temp [j]的现有值.因此,逐渐地,所有i(行)的array [i] [j]的值在temp [j]中求和.这样您就不必使用混乱的迭代.因此,只需将上述代码添加到您的方法中,然后删除旧代码即可.

即使您有锯齿状数组,即内部数组的大小不同,此方法也可以正常工作.但请记住要仔细定义临时数组的大小.

还要注意,我已经使用Arrays.toString(temp)方法来打印数组.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值