因此,我创建了一个具有getExamScore(Student a,int examId)方法的考试分级系统。此方法将检索指定考试的答案关键字,该答案是该考试的学生答卷,并评估学生获得的点数。这是它做什么的粗略草图。计算arrayList中相同元素的数量
Exam toIterate = database.get(examId);
Map<Integer, Question> map = toIterate.getMap();
for(Map.Entry<Integer, Question> entry : map.entrySet()){
answerKey.add(entry.getAnswer());
points.add(entry.getPoints());
}
System.out.println(answerKey);
System.out.println(points);
//Outputs
[False, True, False]
[2.0, 4.0, 3.0]
现在我有了一个独立的方法,可以在arraylist中添加所有学生对该考试的答案。
Student s = new Student();
AnswerSheet as = s.getAnswerSheet(int examId);
ArrayList<String> studentAnswers = as.getAnswers(int examId);
System.out.println(studentAnswers);
//Ouputs
[False, True, False]
现在我想比较answerKey到studentAnswers如果答案匹配从点ArrayList中的相应指标的综合得分在其中添加点。我尝试了下面的代码,它可以工作,但它有点难以理解。有没有更好的方法来做到这一点?我愿意提出改变我的设计的建议。我只是认为这将是最简单的方法。
int i = 0;
for(String s: studentAnswer){
if(s.equals(answerKey.get(i))){
score += points.get(i);
}
i++;
}