【问题标题】:Getting average of square inside a 2D array获取二维数组中正方形的平均值
【发布时间】:2020-09-13 00:59:43
【问题描述】:

我有一个这样的二维数组:

然后用户输入一个奇数值(长度)以及坐标进行平均计算,例如:

长度值减半并从坐标中添加/减去以形成一个正方形以计算该值平方的平均值

这是我的循环,但它没有正确计算平均值

int counter = 0;
double sum = 0;
for (int x = x1; x < x2; x++) {
    for (int y = y1; y < y2; y++) {
        sum = sum + (array[x][y]);
        counter++;
    }
}
average = sum / counter;

对不起,糟糕的图表

当我使用这个数组运行循环并且提供的输出值是 3.5 时,它本来应该是 3.2

【问题讨论】:

  • “它没有正确计算平均值”是什么意思?你能提供例子吗?在您的图表中,这些值的总和似乎为 80,因此平均值为 80/25 = 3,2。
  • 顺便说一句,您的方法似乎是正确的,我能看到的唯一问题是您应该使用 x &lt;= x2´ and y x2 和 y2 是包含坐标。您的代码当前跳过了矩形的最后一列和最后一行。
  • 谢谢,我发现了我的错误,是我很傻

标签: java arrays loops multidimensional-array average


【解决方案1】:

我认为您的问题与您的界限有关。不要忘记如果超过维度的长度,这将抛出IndexOutOfBoundsException。

// x < x2 must to be x <= x2
for (int x = x1; x <= x2; x++) {
    // y < y2 must to be y <= x2
    for (int y = y1; y <= y2; y++) {
        sum = sum + (array[x][y]);
        counter++;
    }
}

【讨论】:

  • 你说得对,我刚刚添加了
  • 如果我硬编码 x1 = 1 和 x2 = 5, y1 = 3, y2 = 7 中的坐标,我仍然会得到异常
  • 好吧我想通了,交换y轴和x轴我很傻,很抱歉给您带来麻烦
  • 我以为你在交换 :)
猜你喜欢
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2013-03-27
相关资源
最近更新 更多