【问题描述】
对某班学生成绩排序。从键盘依次输入某班学生的姓名和成绩(一个班级人数最多不超过50人)并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩,成绩相同时,则按输入次序排序。
【输入形式】
从键盘依次输入最多不超过50个学生的学生姓名和成绩:
第一行输入班级学生人数;
在单独行上输入空格隔开的学生姓名和成绩,其中学生成绩是整数。
【输出形式】
按学生成绩由高到低顺序输出学生姓名和成绩,每行输出一位学生的姓名和成绩,其中姓名(英文)占15位,成绩占5位,均按缺省方式对齐。成绩相同时按输入次序排序。
【输入样例】
4
aaa 50
bbb 70
ccc 65
ddd 90
【输出样例】
############ddd###90
############bbb###70
############ccc###65
############aaa###50
(注意:其中#号代表空格)
默认右对齐形式,排序使用冒泡
import java.util.Scanner;
public class everydayjava {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine();
Student[] students = new Student[n];
for (int i = 0; i < n; i++) {
String line = scanner.nextLine();
String[] parts = line.split(" ");
String name = parts[0];
int score = Integer.parseInt(parts[1]);
students[i] = new Student(name, score);
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
for (Student student : students) {
System.out.printf("%15s%5d%n", student.name, student.score);
}
}
}
class Student {
String name;
int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
}