每日作业1209

编程入门 行业动态 更新时间:2024-10-07 12:19:42

每日<a href=https://www.elefans.com/category/jswz/34/1771149.html style=作业1209"/>

每日作业1209

成绩排名
输入多个学生的姓名和成绩, 打印其名称 成绩和排名
输入:
第一行: 整数N 表示有N个学生
第二行开始, 每行一个字符串和一个整数Mi, 表示学生姓名和成绩
输出:
(1<=N<=100, 0<=Mi<=100)
按成绩从高到低的顺序打印每个学生的姓名,成绩, 排名
(需要注意的是, 如果成绩相同, 则排名并列)
样例输入
6
张三 80
李四 90
王五 85
赵六 85
李雷 90
韩梅梅 100
样例输出:
韩梅梅 100 1
李雷 90 2
李四 90 2
王五 85 3
赵六 85 3
张三 80 4

方式一

//数组写法
public class Task12091 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("输入学生的数量");int num = input.nextInt();//创建一个二维数组String[][] student = new String[num][2];//使用for循环添加数据for(int i = 0; i < num; i++) {System.out.println("输入学生的姓名");student[i][0] = input.next();System.out.println("输入学生的成绩");student[i][1] = input.next();}Arrays.sort(student, new Comparator<Object>() {@Overridepublic int compare(Object o1, Object o2) {if(o1 instanceof String[] && o2 instanceof String[]) {String[] s1 = (String[]) o1;String[] s2 = (String[]) o2;return -s1[1]pareTo(s2[1]);}throw new RuntimeException("输入的数据类型不一致");}});//此时数组内容已经按照成绩顺序排好序,下面是排名的问题,同分同名次//此时数组里第一个人成绩以及是最高的,我们需要比较的是后面的人的成绩和他是否想等int randk = 0; //没有第0名String lastScore = "-1"; //上一个人的成绩for (int i = 0; i < student.length; i++) {if(!(student[i][1].equals(lastScore))){lastScore = student[i][1];randk++;}	System.out.println("姓名:" + student[i][0] + " 成绩" + student[i][1] + " 排名:" + randk);}}
}

运行结果

方式二

public class Task1209 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入学生的数量");int n = input.nextInt(); //存储学生数量int rank = 0; //存储排名int lastScore = -1; //存储上一个学生的成绩List<Student> list = new ArrayList<Student>();for(int i = 0; i < n; i++) {Student s = new Student();System.out.println("请输入学生的姓名");s.setName(input.next());System.out.println("请输入学生的成绩");s.setScore(input.nextInt());list.add(s);}Collections.sort(list, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o2.getScore() - o1.getScore();}});;for (int i = 0; i < list.size(); i++) {if((list.get(i).getScore() - lastScore) != 0) {lastScore = list.get(i).getScore();rank++;}System.out.println("姓名:" + list.get(i).getName() + "成绩:" + list.get(i).getScore() + "名次" + rank);}}
}
public class Student {private String name;private int score;public Student() {}public String getName() {return name;}public int getScore() {return score;}public void setName(String name) {this.name = name;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return  name + " " + score + " ";}}

方式三

public class Task1209 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入学生的数量");int n = input.nextInt(); //存储学生数量int rank = 0; //存储排名int lastScore = -1; //存储上一个学生的成绩List<Student> list = new ArrayList<Student>();for(int i = 0; i < n; i++) {Student s = new Student();System.out.println("请输入学生的姓名");s.setName(input.next());System.out.println("请输入学生的成绩");s.setScore(input.nextInt());list.add(s);}Collections.sort(list);for (int i = 0; i < list.size(); i++) {if((list.get(i).getScore() - lastScore) != 0) {lastScore = list.get(i).getScore();rank++;}System.out.println("姓名:" + list.get(i).getName() + "成绩:" + list.get(i).getScore() + "名次" + rank);}}
}
public class Student implements Comparable<Student>{private String name;private int score;public Student() {}public String getName() {return name;}public int getScore() {return score;}public void setName(String name) {this.name = name;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return  name + " " + score + " ";}@Overridepublic int compareTo(Student o) {// TODO 自动生成的方法存根return o.getScore() - this.getScore();}}

更多推荐

每日作业1209

本文发布于:2024-02-14 11:58:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763336.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:作业

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!