【问题标题】:My average of my ArrayList is incorrect我的 ArrayList 平均值不正确
【发布时间】:2015-11-07 16:49:05
【问题描述】:
static ArrayList<Integer> gradeScore = new ArrayList<Integer>() {{
    add(100);
    add(50);
    add(90);
}};
public static void findAvg(){
    int totalSum = 0;
    for(int i: gradeScore){
        totalSum = totalSum+ i;

    int amountOfGrades = gradeScore.size();
    double gradeAvg =(totalSum/amountOfGrades);
    System.out.println(gradeAvg);
    }

}

当我运行我得到的方法时
分数是 [100, 50, 90] 你的平均值是 33.0 50.0 80.0 谁能告诉我怎么做才能只得到一个平均值?

【问题讨论】:

  • 您正在计算并打印每次循环迭代的平均值。在你的 for 循环之后做一次
  • 创建列表的更好方法:static List&lt;Integer&gt; gradeScore = Arrays.asList(100, 50, 90),或者如果它必须ArrayList,请使用static ArrayList&lt;Integer&gt; gradeScore = new ArrayList&lt;&gt;(Arrays.asList(100, 50, 90))

标签: java arraylist average


【解决方案1】:
for(int i: gradeScore){
        totalSum = totalSum+ i;
}
    int amountOfGrades = gradeScore.size();
    double gradeAvg =(totalSum/amountOfGrades);
    System.out.println(gradeAvg);

花括号是问题所在。在totalSum = totalSum+i 之后关闭for..loop

【讨论】:

    【解决方案2】:

    您运行其他 3 行代码 n 次,这不是必需的。

    您可以添加一次,然后在最后显示。

    int totalSum = 0;
    for(int i: gradeScore){
        totalSum = totalSum+ i;
    }
    int amountOfGrades = gradeScore.size();
    double gradeAvg =(totalSum/amountOfGrades);
    System.out.println(gradeAvg);
    

    此外,您的平均除法会截断小数部分,如果您不想这样做,请将其转换为双精度。

    double gradeAvg = (double) (totalSum/amountOfGrades);
    

    【讨论】:

      【解决方案3】:

      for 循环没有正确结束或缺少 for 循环闭合大括号。我尝试自定义您的解决方案

      static ArrayList<Integer> gradeScore = new ArrayList<Integer>() {
          {
              add(100);
              add(50);
              add(90);
          }
      };
      
      public static void findAvg() {
          int totalSum = 0;
          for (int i : gradeScore)
              totalSum += i;
          System.out.println(totalSum / (1.0 * gradeScore.size()));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        相关资源
        最近更新 更多