我想遍历我的数组列表名单,并且对于每个学生项目,我想返回一系列成绩的平均值。我知道有三个等级,所以这段代码可以工作,但是如果我不知道学生的等级数组中有多少等级,我怎么能实现呢?
public static void printAverageGrades(){
System.out.println("Print Average Grades");
for(Student item : roster)
{
double div = roster.size();
**double average = (item.getGrades()[0] + item.getGrades()[1] + item.getGrades()[2]) / div;**
System.out.printf("%.2f \n", average);
}
}
答案 0 :(得分:0)
你可以这两种方式。首先列出更优选的Java 8方式。
使用Arrays.stream
将数组封装为流,然后获取平均值只是几个方法调用。
double avg = Arrays.stream(item.getGrades()).average().getAsDouble();
使用另一个for
循环并保持元素的运行总数。不要忘记手动将你的分子强制转换为double
,否则你会遇到整数除法。
int sum = 0;
for(int i : item.getGrades()) {
sum += i;
}
double avg = (sum * 1.0) / item.getGrades().length;
在实践中,永远不会对您的索引位置进行硬编码。您可以 始终 获取数组using .length
的长度。
答案 1 :(得分:0)
你可以使用这个迭代数组的函数,通过动态迭代for循环,我们计算sum。 然后将平均值除以数组的长度。
double getAverage(double[] data)
{
double sum = 0.0;
for(double a : data)
sum += a;
return sum/data.length;
}