有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个整数数组“int pixels[][]”

我想求出它们的总和,这样我就能求出平均像素值

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

如果该值高于阈值,我将导出一个白色像素,如果其低于阈值,我将导出一个黑色像素(只是为了提供一些上下文)

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

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

共 (2) 个答案

  1. # 1 楼答案

    如果要迭代数组中的所有数字,可以尝试以下方法:

               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);
    
  2. # 2 楼答案

    您需要迭代数组中的每一行和每一列,因此需要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);