我有一个整数数组'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);
答案 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;