欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 智能成绩表

智能成绩表

2024/10/24 1:14:37 来源:https://blog.csdn.net/weixin_64742764/article/details/141997123  浏览:    关键词:智能成绩表

题目描述

小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?

输入描述

第 1行输入两个整数,学生人数n和科目数量 m。

  • 0<n<100
  • 0<m<10

第 2 行输入 m 个科目名称,彼此之间用空格隔开

  • 科目名称只由英文字母构成,单个长度不超过10个字符。
  • 科目的出现顺序和后续输入的学生成绩--对应。
  • 不会出现重复的科目名称。

第3行开始的n行,每行包含一个学生的姓名和该生m 个科目的成绩(空格隔开)

  • 学生不会重名。
  • 学生姓名只由英文字母构成,长度不超过10个字符,
  • 成绩是0~100的整数,依次对应第2行种输入的科目,

第n+2行,输入用作排名的科目名称。若科目不存在,则按总分进行排序。

输出描述

输出一行,按成绩排序后的学生名字,空格隔开。成绩相同的按照学生姓名字典顺序排序。

public class 智能成绩表 {public static String jifenkemu;static class Student implements Comparable<Student>{String name;Map<String, Integer> projects;int tot = 0;public Student(String name) {this.name = name;this.projects = new HashMap<>();}public void add(String project, int score){projects.put(project, score);tot += score;}@Overridepublic int compareTo(Student o) {int p = tot;int p1 = o.tot;if (projects.containsKey(jifenkemu)){p = projects.get(jifenkemu);p1 = projects.get(jifenkemu);}if (p != p1){return p1 - p;}else {return name.compareTo(o.name);}}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();sc.nextLine();String[] projests = sc.nextLine().split(" ");ArrayList<Student> students = new ArrayList<>();for (int i = 0; i < n; i++) {String name = sc.next();Student student = new Student(name);for (int j = 0; j < m; j++) {int so = sc.nextInt();student.add(projests[j], so);}students.add(student);}jifenkemu = sc.next();Collections.sort(students);for (Student student: students){System.out.println(student.name + " ");}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com