繁体   English   中英

计算数组中元素的总和

[英]Computing sum of elements in array

我有一个带有以下构造函数的Mold

public Mold(int[][] mold){
    this.mold = mold; 
  }

我也有一个方法sum()看起来像这样:

public int sum(){
    int sum = 0;
    for( int i = 0; i <matrix.length; i++) {
      sum += matrix[i][i];
    }
    return sum;
  }

我想做的是计算Mold中所有元素的总和,但是我不确定在sum += matrix[i][i];要放什么sum += matrix[i][i]; 部分代替“ i”。 我什至可能会完全错误地这样做。 我已经坚持了一段时间,但似乎无法弄清楚。

我想获得的输出示例是: int[][] test1 = { { 10, 5 }, { 2, 8 } }; 应该给25加上求和法。

如果有人可以将我推向正确的方向,那就太好了! 非常感谢,

您正在执行此操作:

假设3x3元素的二维数组是它们的坐标(行,列):

[0,0][0,1][0,2]
[1,0][1,1][1,2]
[2,0][2,1][2,2]

仅使用一个循环和循环中仅一个变量进行计数的方式就是这样做的:

i = 0 (计算元素0,0)

[*][ ][ ]
[ ][ ][ ]
[ ][ ][ ]

i = 1 (计算元素1、1)

[ ][ ][ ]
[ ][*][ ]
[ ][ ][ ]

i = 2 (计算元素2,2)

[ ][ ][ ]
[ ][ ][ ]
[ ][ ][*]

您需要使用双循环来进行求和。 循环每一行,对于循环的每一行,您都必须为该行的每一列循环。

像这样:

for (i = 0; i < maxRows; i++){
 for (j = 0; j < maxCols; j++{
  //
 }
}

有了它,您将只汇总位置[0][0][1][1][2][2] ,..., [i][i]而您将错过大部分元素。

数组中有2个维,因此需要2个循环。

在现有的for循环中创建另一个for循环,并使用另一个循环变量j 到达当前行长度的末尾时它将停止: matrix[i].length sum ,请使用两个循环变量: matrix[i][j]

在当前方法中,您只是在对角线(0,0),(1,1),(2,2)中添加元素。 如果处理数组数组,则可以使用增强型的for循环两次:一种遍历数组中的元素,另一种遍历数组中的元素:

int sum = 0;
for(int[] moldElement : mold) {
    for(int element : moldElement) {
        sum += element;
    }
}
return sum;

考虑一下您在做什么以及如何完成它。

请记住,二维数组是数组的数组。

for( int i = 0; i <matrix.length; i++) {
      sum += matrix[i][i];
}

`sum[i][i]` in this code is essentially doing this.
     0  0
     1  1
     2  2
     3  3
     4  4
     ...

您需要做的是

     0   0 
     0   1
     0   2
     ...
     1   0
     1   1 
     1   2
     ...

可以将其视为X和Y坐标!

这就是你的答案。

for(int i = 0; i < matrix.length; i++){
    for(int j = 0; z < matrix[j].length; j++{
        sum += matrix[i][j];
    }
}

请特别注意这一行。 matrix[i].length如果数组不是完全统一怎么办?

例如。

  i
j[0][][][][][]
 [1][]
 [2][][][]
 [3][][][][][][]

这样仍然可以迭代。

做两次循环。

int sum = 0;
for(int i = 0; i < matrix.length; i++)
{
    for(int j = 0; j < matrix[0].length; j++)
    {
        sum += matrix[i][j];
    }
}
return sum;

嵌套for循环

 public int sum(){
    int sum = 0;
    for( int i = 0; i <matrix.length; i++) {
        for (int j = 0; k < matrix[i].length; j++){
            sum += matrix[i][j];
        }
    }
    return sum;
  }

就像有人说的那样,您只需要遍历数组的一个维度。 当您有一个数组的n个维时,需要n个循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM