设计一个学生student类,包含学号、姓名、出生日期、性别等字段 从input.txt(从附件下载)中读取其中的学生信息,并存入学生集合list中 对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生,依次输出学号、姓名、出生日期、性别并用空格隔开Java
时间: 2024-02-03 15:02:45 浏览: 221
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
好的,这是一个简单的 Java 代码实现:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Student {
private String number;
private String name;
private LocalDate birthdate;
private String gender;
public Student(String number, String name, LocalDate birthdate, String gender) {
this.number = number;
this.name = name;
this.birthdate = birthdate;
this.gender = gender;
}
public String getNumber() {
return number;
}
public String getName() {
return name;
}
public LocalDate getBirthdate() {
return birthdate;
}
public String getGender() {
return gender;
}
public static void main(String[] args) throws FileNotFoundException {
List<Student> students = new ArrayList<>();
Scanner scanner = new Scanner(new File("input.txt"));
while (scanner.hasNextLine()) {
String[] fields = scanner.nextLine().split("\\s+");
String number = fields[0];
String name = fields[1];
LocalDate birthdate = LocalDate.parse(fields[2], DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String gender = fields[3];
students.add(new Student(number, name, birthdate, gender));
}
scanner.close();
Collections.sort(students, Comparator.comparing(Student::getBirthdate));
PrintWriter writer = new PrintWriter(new File("output.txt"));
for (Student student : students) {
writer.println(student.getNumber() + " " + student.getName() + " " +
student.getBirthdate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " " +
student.getGender());
}
writer.close();
}
}
```
我们定义了一个 `Student` 类,其中包含学号、姓名、出生日期、性别等字段。我们使用了 `java.time.LocalDate` 类型的日期对象,方便后续排序操作。我们还实现了类的 getter 方法,用于获取学生对象各个字段的值。
接下来,我们读取输入文件 `input.txt` 中的学生信息,并将它们存入一个学生集合 `students` 中。我们使用了 `java.util.Scanner` 类来读取文件中的每一行,并将每一行的字段转换为学生对象的各个属性。我们使用了 `DateTimeFormatter` 类来将输入的日期字符串转换为 `LocalDate` 类型的日期对象。
然后,我们使用 `java.util.Collections.sort` 方法,对学生集合 `students` 进行排序操作。由于我们已经实现了 getter 方法,我们可以使用 `Comparator.comparing` 方法来指定按照出生日期来排序。
最后,我们将排序后的学生集合 `students` 输出到输出文件 `output.txt` 中。输出格式与输入文件 `input.txt` 中的格式相同,即每行依次输出学号、姓名、出生日期、性别并用空格隔开。我们使用了 `java.io.PrintWriter` 类来输出到文件,并且使用了 `DateTimeFormatter` 类来将日期对象转换为字符串输出。
阅读全文