Java学生成绩读取排序算法实现与代码示例
Java学生成绩读取与排序实战指南:从输入到排序输出
本文将为您提供一个完整的Java程序,用于读取多行学生成绩信息,计算平均成绩,并按降序排列学生。
1. 功能描述
本程序从键盘读取多行学生成绩信息,每行信息包含学号、姓名、课程名和成绩。程序将读取这些信息,计算每个学生的平均成绩,并按平均成绩降序排列学生。
2. 代码实现javaimport java.util.*;
// 定义学生类class Student { String id; String name; List
// 构造函数 public Student(String id, String name) { this.id = id; this.name = name; this.scores = new ArrayList<>(); }
// 添加成绩 public void addScore(int score) { scores.add(score); }
// 计算平均成绩 public int getAverageScore() { int sum = 0; for (int score : scores) { sum += score; } return sum / scores.size(); }}
// 主程序入口public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List
// 读取学生成绩信息 while (true) { String input = scanner.nextLine(); if (input.equals('exit')) { break; }
String[] data = input.split(','); String id = data[1]; String name = data[0]; int score = Integer.parseInt(data[3]);
boolean studentExists = false; // 查找学生是否存在 for (Student student : stuList) { if (student.id.equals(id)) { student.addScore(score); studentExists = true; break; } } // 如果学生不存在,则创建新的学生对象 if (!studentExists) { Student newStudent = new Student(id, name); newStudent.addScore(score); stuList.add(newStudent); } }
// 按平均成绩降序排列学生 Collections.sort(stuList, new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { int avgScore1 = s1.getAverageScore(); int avgScore2 = s2.getAverageScore(); if (avgScore1 == avgScore2) { return s1.id.compareTo(s2.id); } else { return Integer.compare(avgScore2, avgScore1); } } });
// 输出排序后的学生信息 for (int i = 0; i < stuList.size(); i++) { String rank = 'No' + (i + 1) + ':'; System.out.println(rank + stuList.get(i).id + ',' + stuList.get(i).name); } }}
3. 代码解析
- 首先,我们定义了一个
Student类,用于存储学生的学号、姓名和成绩信息。- 在Main类的main方法中,我们使用Scanner类从键盘读取学生成绩信息。- 对于每行信息,我们将其分割成学号、姓名、课程名和成绩。- 然后,我们检查该学生是否已经存在于stuList中。如果存在,则将该成绩添加到该学生的成绩列表中;否则,创建一个新的Student对象,并将其添加到stuList中。- 最后,我们使用Collections.sort方法和一个自定义的Comparator对stuList进行排序,排序规则为平均成绩降序,平均成绩相同则按学号升序。- 最后,我们遍历排序后的stuList,并输出每个学生的排名、学号和姓名。
4. 总结
本文提供了一个完整的Java程序,用于读取学生成绩信息、计算平均成绩并按降序排列学生。代码中包含详细的注释,方便读者理解。读者可以根据自己的需要修改代码,以实现更复杂的功能。
原文地址: https://www.cveoy.top/t/topic/b4eW 著作权归作者所有。请勿转载和采集!