2

我有一个应该像这样运行的程序。您输入班级中的学生人数,例如 3。然后你输入一个学生证,后跟 4 个数字。前 3 个是平均占班级总成绩的 80% 的成绩,第 4 个数字是学生在参加期末考试后希望获得的成绩,占班级总成绩的 20%。

Example:  
Enter number of students in class: 3  
(Here you would enter the data)  
123456 90 90 90 90  
543216 70 80 80 70  
435366 80 80 80 90  

那么输出应该是:

123456 90 //(The minimum score the student must get on their final to get the grade they   want)  
435366 130  
543216 44  

我把所有的数学都记下来了,而且效果很好。我输入信息并得到正确的数字。我遇到的问题是以最小到最大的顺序显示输出。我使用表格输入信息,其中行是班级中的学生人数,列是 5(ID、1 年级、2 年级、3 年级、期望的年级)

for (int count = 0; count < numberOfStudents(in this case, 3); ++count)  
{  
    StudentID = The first ID I entered (123456);    
    Grade = *a bit of math to solve for this*;  
}  

现在,当它再次进入循环时,StudentID 和 Grade 的值被替换,因此我无法将它们与任何东西进行比较以检查哪个小于哪个。我有一个想法,将 StudentID 放入一个数组中,然后进行比较,但我遇到的问题是如何让相应的成绩与 ID 保持一致。

有任何想法吗?

4

1 回答 1

6

听起来你真的应该创建一个Student类,其中包含他们的 ID、他们的结果和他们想要的最终成绩。然后,您可以拥有一组学生(例如 aStudent[]或 aList<Student>并使用现有结果对其进行Collections.sort排序。(要进行排序比较成绩,要么 make Studentimplement Comparable<Student>,要么编写 a GradeComparatorwhich implements Comparator<Student>。)

作为一般原则,每当您发现自己有多个集合时,当一个集合的每个元素对应于其他集合的相同元素索引时,您应该考虑将数据封装为一种类型,然后再封装为该类型的集合。再举一个例子,而不是:

String[] addressLines1;
String[] addressLines2;
String[] cities;
String[] zipCodes;
String[] countries;

...您将有一个Address[]or a List<Address>,其中Address该类具有第 1 行、第 2 行、城市、邮政编码和国家/地区的属性。

于 2013-10-12T05:32:02.263 回答