如何找到int [] [] Java中所有值的总和?
我有整数数组“的整数像素[] []”如何找到int [] [] Java中所有值的总和?
的阵列,并且我想找到所有这些的总和,所以我可以找到的平均像素值
这将被使用,以便我可以将一个像素的平均值设置为一个pbm图像的阈值
如果高于阈值i的值将导出一个白色像素,如果它的下面我将导出一个黑色像素(只是为了给出一些上下文)
我认为下面的代码是不正确的,因为它的输出6.0,但我认为它的东西这样
double threshold = 0;
for(int i = 0; i < pixels.length; i++)
{
threshold += (double)pixels[i][i];
}
System.out.print(threshold);
你想遍历数组中的所有号码,你可以用这个尝试:
double threshold = 0;
for(int i = 0; i < pixels.length; i++)
{
for(int j=0;j<pixels[i].length;j++){
threshold += (double)pixels[i][j];
}
}
System.out.print(threshold);
这里需要使用双for
。类似这样的: -
for(int i = 0; i < pixels.length; i++){
for(int i = 0; i < pixels[i].length; i++){
threshold += (double)pixels[i][j];
}
}
您需要遍历数组中的每一行和每列,所以您需要2个for-loops。你目前的工作只包括以下内容:(0,0), (1,1), (2,2), ...
。
这将工作:(假设非交错数组,至少为所述阈值计算)
long sum = 0;
for (int i = 0; i < pixels.length; i++)
for (int j = 0; j < pixels[i].length; j++)
{
sum += pixels[i][j];
}
double threshold = (double)sum/(pixels.length * pixels[0].length);
System.out.print(threshold);
或者更简单地说:(假设非交错数组,至少为所述阈值计算)
long sum = 0;
for (int[] i: pixels)
for (int j: i)
{
sum += j;
}
double threshold = (double)sum/(pixels.length * pixels[0].length);
System.out.print(threshold);
提示
你有一个二维数组,所以要加每次需要遍历各行的列元素。对于这2个循环可能有些用处。
遍历了每一个值,并将其添加
退出循环
将您的款项与要素的数量得到平均值(你可能需要考虑一下类型转换这里)
你不在计算整数时需要双倍的数,这是浪费,使用时间长,速度更快
long sum = 0;
int n = 0;
for (int[] a : pixels) {
for (int e : a) {
sum += e;
n++;
}
}
double avg = ((double) sum)/n;
稍微优化:'n + = a.length;'内循环之前;) – jlordo 2013-02-20 11:45:54
遍历每一行,迭代每个单元格以添加全部。你需要嵌套循环。 – jlordo 2013-02-20 11:34:41
您可以使用2个嵌套循环来访问所有元素。 – Henry 2013-02-20 11:34:48