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