计算平均值?
问题描述:
我对此问题有疑问:计算平均值?
给出测试结果列表(每个测试结果都包含测试日期,学生ID和学生的得分);返回每个学生的最终分数。学生的最终分数是以他/她的5个最高考试分数的平均值计算的。你可以假设每个学生至少有5个考试成绩。
现在,这是事情。我不想要答案。
我试过散列,但哈希可以提供地址的密钥,所以它不适用于我。
我想过使用数组列表迭代想法来计算平均值并返回前五个分数,但是如何将数字与studentID分配?
说我想要的输出是:迈克,15.这不是问题需要什么? 获取学生ID和平均数。 请帮我解决一些线索,我正在学习。
答
仅仅通过学生证的测试结果(为主要排序关键字)和降分(小类键)然后再通过收集如下(伪代码)进行排序:
lastId = element[0].Id - 1
for each record in element[]:
if record.Id != lastId:
lastId = record.Id
counter = 5
sum = 0
if counter > 0:
sum = sum + record.score
counter = counter - 1
if counter == 0:
print "Student ", record.Id, " got average of ", (sum/5)
由于数据你知道一个给定学生的所有分数都在一起,并且前五个分数是最高的。因此,上面的代码将允许你全部工作。
请记住,这依赖于你的“每个学生至少有五个结果”的规则。没有这一点,你必须改变平均计算代码,并可能对最后一名学生做一些工作后循环。
答
使用面向对象的原则。这里有一些提示。 创建一个Test类来表示每个测试。
class Test
{
Date date;
Student s; //store instance of student- has a relationship to Student
double[] scores; //store test scores
double finalscore; //final score
Test() {
//Initialize scores array and assign default values (0)
}
}
创建一个Student类来表示每个学生。
class Student
{
String name;
int id;
}
创建测试数组列表。
List<Test> tests = new ArrayList<Test>();
它现在只是一个循环测试,并找到平均存储在finalscore的问题。
您可以通过将所有'Test'属性移动到'Student'类并删除像'Date'和'finalscore'这样的不相关数据来增强设计。 – 2013-02-20 06:09:25