如果数据在每次返回循环时被替换,我如何将循环中的数据从最小到最大排序?

Osc*_*r F 2 java arrays sorting loops

我有一个应该像这样的程序.你输入一个班级的学生人数,例如3.然后输入学生ID,然后输入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  
Run Code Online (Sandbox Code Playgroud)

然后输出应该是:

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

我得到了所有的数学,它工作正常.我输入信息,然后我得到正确的数字.我遇到的问题是让输出按照从最小到最大的顺序显示.我使用一个表来输入信息,其中Rows是班级中的学生人数,而列数是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*;  
}  
Run Code Online (Sandbox Code Playgroud)

现在当它再次进入循环时,StudentID和Grade的值被替换,所以我无法将它们与任何东西进行比较以检查哪个小于哪个.我有一个想法,将StudentID放入一个阵列,然后比较,然后我遇到的问题是弄清楚如何得到相应的成绩与ID一起.

有任何想法吗?

Jon*_*eet 6

这听起来真的应该创建一个Student类,其中包含他们的ID,他们的结果和他们期望的最终成绩.然后,您可以拥有一组学生(例如a Student[]或a List<Student>,并按现有结果排序使用Collections.sort.)(要进行排序比较等级,要么生成Student工具Comparable<Student>,要么编写GradeComparator实现的Comparator<Student>.)

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

String[] addressLines1;
String[] addressLines2;
String[] cities;
String[] zipCodes;
String[] countries;
Run Code Online (Sandbox Code Playgroud)

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