java。定义包含学号、姓名和成绩信息的学生类Student。在测试类中定义存放n个学生对象存放到某个集合对象中(具体集合自行确定),然后按成绩进行降序排列,并将排序结果(类Student对象)保存到文件stud.dat中,再读出文件stud.dat中所有的学生信息并显示。 说明:注意成绩排序,可以采用自然排序或客户排序,也可以采用集合类的sort()方法进行
时间: 2024-03-03 18:51:54 浏览: 71
下面是一个实现该功能的示例代码:
Student.java:
```java
public class Student implements Comparable<Student> {
private String id;
private String name;
private int score;
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Student o) {
return o.getScore() - this.score;
}
@Override
public String toString() {
return "学号:" + id + ",姓名:" + name + ",成绩:" + score;
}
}
```
Test.java:
```java
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("1001", "张三", 90));
students.add(new Student("1002", "李四", 80));
students.add(new Student("1003", "王五", 70));
students.add(new Student("1004", "赵六", 85));
students.add(new Student("1005", "钱七", 95));
Collections.sort(students);
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("stud.dat"))) {
for (Student student : students) {
out.writeObject(student);
}
} catch (IOException e) {
e.printStackTrace();
}
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("stud.dat"))) {
while (true) {
Student student = (Student) in.readObject();
System.out.println(student);
}
} catch (EOFException e) {
// 文件读取完毕
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
这段代码中,我们定义了一个 Student 类,其中包含了学号、姓名和成绩三个属性,实现了 Comparable 接口,并重写了 compareTo 方法,以便按成绩排序。在 Test 类中,我们首先创建了一个包含了 5 个学生对象的 ArrayList 对象,并使用 Collections.sort 方法对其进行排序。接着,我们将排序结果写入一个名为 stud.dat 的文件中,然后再读取该文件中的所有学生信息并显示出来。
阅读全文