如何在int [] [] Java中找到所有值的总和?

时间:2013-02-20 11:32:23

标签: java int

我有一个整数数组'int pixels [] []'

我希望找到所有这些的总和,以便找到平均像素值

将使用这个,以便我可以将像素的平均值设置为pbm图像的阈值

如果超过阈值的值i将导出一个白色像素,如果它下面我将导出一个黑色像素(只是为了给出一些上下文)

我认为下面的代码根本不正确,因为它输出6.0但我认为它是这样的

   double threshold = 0;
   for(int i = 0; i < pixels.length; i++)
   {
       threshold += (double)pixels[i][i];
   }
   System.out.print(threshold);

5 个答案:

答案 0 :(得分:5)

你想迭代数组中的所有数字,你可以试试这个:

           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);

答案 1 :(得分:0)

您需要在此处使用双for。这样的事情: -

for(int i = 0; i < pixels.length; i++){
        for(int i = 0; i < pixels[i].length; i++){
               threshold += (double)pixels[i][j];
        }
}

答案 2 :(得分:0)

您需要遍历数组中的每一行和每列,因此需要2个for循环。您目前所做的只包括以下内容:(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);

答案 3 :(得分:0)

HINT

你有一个2D数组,所以要添加每个元素来遍历每一行的每一列。对于这2个for循环可能有一些用处。

遍历每个值并添加它们

退出循环

将您的总和除以元素数量以获得平均值(您可能需要考虑在此输入类型)

答案 4 :(得分:0)

当你计算总数时,你不需要双倍,这是浪费,使用时间长,速度更快

    long sum = 0;
    int n = 0;
    for (int[] a : pixels) {
        for (int e : a) {
            sum += e;
            n++;
        }
    }
    double avg = ((double) sum) / n;