2015-11-07 45 views
0
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 谁能告诉我该怎么做只能得到一个平均值?我的我的ArrayList平均是不正确

+0

你正在计算并打印在每个迭代循环的平均值。在你的for循环之后做一次 –

+0

更好的方法来建立你的列表:'static List gradeScore = Arrays.asList(100,50,90)',或者如果*有*为'ArrayList',则使用'static ArrayList gradeScore = new ArrayList <>(Arrays.asList(100,50,90))' – Andreas

回答

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

大括号是问题所在。 totalSum = totalSum+i

0

您运行其他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); 
0

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())); 
}