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

标签 java arrays sorting loops

我有一个应该像这样运行的程序。您输入类(class)中的学生人数,例如 3。然后你输入学生证,后面跟着 4 个数字。前 3 个数字是平均成绩占类(class)总成绩的 80%,第四个数字是学生在期末考试后希望获得的成绩,占类(class)总成绩的 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  

我把所有的数学都记下来了,效果很好。我输入信息并得到正确的数字。我遇到的问题是让输出按从最小到最大的顺序显示。我使用表格输入信息,行是类(class)中的学生人数,列是 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 对应的相应成绩。

有什么想法吗?

最佳答案

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

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

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

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

关于java - 如果数据每次返回循环时都会被替换,如何将循环中的数据从最小到最大排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330768/

相关文章:

javascript - jquery在javascript函数中隐藏div数组

javascript - 避免 Math.random() 函数上的某些组合

java - 计算包含 0 和 1 的排序数组中零的数量的算法。

java - 谷歌地图,如何让它看起来更亮?看起来有点暗

java - 从 log4j 迁移到 lof4j2 时的 SpringBoot 问题

Java 克罗地亚语言环境

javascript - 分配元素特定的 bool 值以确定元素是否先前已被单击 - 当前代码毯更新所有元素

c - 在 C 中返回二维字符数组

c - 这是选择排序还是插入排序?请给我正确的方向

python - 如何对这个 csv 文件进行排序?