Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在int[]]Java中找到所有值的总和?_Java_Int - Fatal编程技术网

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

如何在int[]]Java中找到所有值的总和?,java,int,Java,Int,我有一个整数数组“int像素[][]” 我想求出它们的总和,这样我就能求出平均像素值 这将用于使我可以设置一个像素的平均值为pbm图像的阈值 如果该值高于阈值,我将导出一个白色像素,如果该值低于阈值,我将导出一个黑色像素(仅提供一些上下文) 我假设下面的代码根本不正确,因为它的输出是6.0,但我认为它是这样的 double threshold = 0; for(int i = 0; i < pixels.length; i++) { threshold +=

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

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

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

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

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

   double threshold = 0;
   for(int i = 0; i < pixels.length; i++)
   {
       threshold += (double)pixels[i][i];
   }
   System.out.print(threshold);
双阈值=0;
对于(int i=0;i
要迭代数组中的所有数字,可以尝试以下方法:

           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);
双阈值=0;
对于(int i=0;i对于(int j=0;j您需要在此处为
使用双精度
。类似于:-

for(int i = 0; i < pixels.length; i++){
        for(int i = 0; i < pixels[i].length; i++){
               threshold += (double)pixels[i][j];
        }
}
for(int i=0;i
您需要迭代数组中的每一行和每一列,因此需要2个for循环。您当前所做的仅包括以下内容:
(0,0),(1,1),(2,2),…

这是可行的:(假设一个非锯齿阵列,至少在阈值计算中是这样)

暗示

您有一个2D数组,所以要添加每个元素,您需要遍历每行的每一列。为此,2个For循环可能会有一些用处

遍历每个值并添加它们

出口回路


将求和除以元素数以获得平均值(您可能需要考虑在此处键入casting)

计算整数和时不需要双倍,这是一种浪费,使用long,速度更快

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

迭代每一行,然后迭代每一个单元格以累加所有元素。你需要嵌套循环。你可以使用两个嵌套循环来访问所有元素。
+=
不是运算符,
+=
是运算符。我收回了我的-1,因为你已经删除了错误。我建议你在IDE中编码,然后在这里复制/粘贴你的答案。这将阻止这种编译r错误。谢谢,我刚一贴出来就意识到了这一点(总是有助于打字或解决问题,通常只有“发现”才能解决问题)不管怎样,你是对的,所以我接受answer@user1110338-如果这是您问题的正确答案,则无论您是否自行修复,都应将其标记为正确答案。稍微优化:
n+=a.length;
内环之前;)
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);
    long sum = 0;
    int n = 0;
    for (int[] a : pixels) {
        for (int e : a) {
            sum += e;
            n++;
        }
    }
    double avg = ((double) sum) / n;