计算数组列表的平均值?

72

我正在尝试使用以下代码计算用户输入的一组值的平均值,并在jTextArea中显示它,但它无法正常工作。比如,用户输入了7、4和5,程序显示平均值为1,而应该显示5.3。

  ArrayList <Integer> marks = new ArrayList();
  Collections.addAll(marks, (Integer.parseInt(markInput.getText())));

  private void analyzeButtonActionPerformed(java.awt.event.ActionEvent evt) {
      analyzeTextArea.setText("Class average:" + calculateAverage(marks));
  }

  private int calculateAverage(List <Integer> marks) {
      int sum = 0;
      for (int i=0; i< marks.size(); i++) {
            sum += i;
      }
      return sum / marks.size();
  }

代码哪里出了问题?


9
你不是在对分数求和,而是在对数组索引 i 求和。 - Tony Ennis
11个回答

0

这里有一个使用 BigDecimal 而不是 double 的版本:

public static BigDecimal calculateAverage(final List<Integer> values) {
    int sum = 0;
    if (!values.isEmpty()) {
        for (final Integer v : values) {
            sum += v;
        }
        return new BigDecimal(sum).divide(new BigDecimal(values.size()), 2, RoundingMode.HALF_UP);
    }
    return BigDecimal.ZERO;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接