[英]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.