我正在尝试计算并返回整数值数组的平均值。问题是,我要从中计算平均值的数组具有需要查找平均值的值以及需要排除的值。

例如,将此作为我在数组中的数据集。
20,-999,-10、50,-999、40、30

我需要找到平均值,但要从计算中排除任何-999值。

如何从总和中删除-999值,然后找到要除以的新值?有没有一种方法可以对我排除的值进行计数?如何排除一个值并转到下一个?

    public static double averageTemperature(int[] temperatures)
{
    double sum = 0.0;
    double avg = 0.0;
    for (int i =0; i < temperatures.length; i++)
    {
      if (i == -999)
      {
      // what technique is there to exlude and keep counting?
      }
      else
      {
      sum += i;
      }
    }

    avg = sum / temperatures.length;
    return avg;
}

最佳答案

这应该非常简单-只需将变量用作“有效”条目的计数器即可。您还需要正确访问数组中的值。这是一个建议(未试用),它假定“有效”条目是不等于t0 -999的条目(根据需要修改条件):

public static double averageTemperature(int[] temperatures)
{
    double sum = 0.0;
    double avg = 0.0;
    int validEntries = 0;
    for (int i =0; i < temperatures.length; i++)
    {
        // process only "valid" entries
        if (temperatures[i] != -999)
        {
            sum += temperatures[i];
            ++validEntries;
        }
    }
    avg = sum / validEntries;
    return avg;
}

10-08 17:58