所以我正在尝试制作一个简单的程序,它有一个模拟大学课程的数组。您可以将学生添加到班级(称为IOOP),获取他们的名字和姓氏,站立,测验分数,测验平均值,期末考试平均值等。该数组将学生作为其项目,其中一种方法称为printFinalExamDetails。我的教授希望我们不仅要显示整个班级的平均期末考试成绩(我已编码),还要显示新生,大二,大三和大四的平均期末考试成绩。我的代码现在看起来像这样:
public void printFinalExamDetails ( ) {
double sum, counter; sum = 0;
for (Student x : students )
{
sum = sum + x.getFinalExamScore();
counter = students.size();
System.out.println (x.getFirstName() + " " + x.getLastName( ) + ": " + x.getFinalExamScore( ) );
System.out.println ("The average final exam score is: " + sum/counter + ".");
String standing = x.computeStanding();
if(standing.equals("freshman"))
System.out.println ("The average final exam score for the freshmen is: " + sum/counter + ".");
if(standing.equals("sophomore"))
System.out.println("The average final exam score for the sophomore is: " + sum/counter + ".");
}
}
现在我害怕一次又一次地使用计数器将使用全班级而不仅仅是新生/ sophs / juniors /老年人,如果我使用students.size(),它将打印所有学生阵列,而不仅仅是新生。任何人都可以给我一些关于如何编码的提示吗?谢谢!
答案 0 :(得分:0)
根据我的理解,问题是你有一个变量代表班级中的学生人数(counter
,可以使用更好的名字),你担心的是因为它是全班,只有具有一定排名的学生才能准确地平均分数。
那么,解决方案就是要遍历你的学生名单,并对你有多少新生,二年级学生等进行个别计数,或者改为更好的数据结构,以便更容易确定每个班级的人数
由于这是一个家庭作业问题,我不会给你代码,但前者可以通过一个简单的for
循环来完成。只需循环遍历所有学生,并计算每个班级中有多少学生。你可以在他们的时候总结他们的分数。
使用它的最有效方法可能是将Students的数据结构更改为HashMap。您可以将键设置为学生班级的字符串,然后将值设置为该班级中每个学生的ArrayList。通过这种方式,您可以更轻松地获得所需课程的学生,并通过map.values().getSize()
确定每个班级的学生人数。