【问题标题】:Java calculating average of numbers from another fileJava计算另一个文件中数字的平均值
【发布时间】:2011-07-13 23:37:08
【问题描述】:
public void computeAverage(String [] names, int [] scores, char [] grades){
    int av = 0;
    for (int i = 0; i < names.length; i++)
        av = (scores[i]++ / 26);
    System.out.print(av);

}

大家好, 以上是我读取测试分数列表并计算其平均值的代码。有26个考试成绩。我遇到了麻烦,请帮助! 谢谢

【问题讨论】:

  • 不只是乱搞文件

标签: java file average


【解决方案1】:

这里的问题是,在循环的每次迭代中,您一直在重写 av 变量。此外,您似乎不需要 namesgrades 数组作为参数,因为您没有使用它们。这应该会更好:

public void computeAverage(int [] scores)
{
    double average = 0;
    for (int i = 0; i < scores.length; i++)
    {
        average += scores[i];
    }

    average /= scores.length;

    System.out.print(average);
}

【讨论】:

    【解决方案2】:

    让我们分解一下:

    • 您需要遍历整个分数数组并对每个分数求和 总计

    • 然后您需要除以总得分。作为@cliff.meyers 指出,这就是平均的定义

    • 作为旁注,您正在循环针对 name.length,但索引 成分数。这很糟糕。

    • 您正在除以一个硬编码的常数。这也很糟糕。

    • 您不需要函数中的姓名或成绩来计算平均值。

    【讨论】:

      【解决方案3】:

      尝试先将它们全部相加,然后除以总数。这就是你计算平均值的方式......

      【讨论】:

      • 是的,我知道,但它们在一个文件中,并且都存储在数组 scores[]
      【解决方案4】:

      您需要添加对运行记录的贡献:

      av += (scores[i] / 26.0);
      

      除以names.length 可能更好,最好将除法留到最后。最后,小心整数除法,它可能不会像你想象的那样。

      【讨论】:

        【解决方案5】:
        public static int computAverage(int[] scores)
        {
            long sum = 0;
            for(int i : scores)
            sum += i;
            return sum / scores.length;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-02
          • 1970-01-01
          • 1970-01-01
          • 2019-08-01
          • 2013-07-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多