编写一个程序,实现一下功能,要求 设计一个学生student类,包含学号、姓名、出生日期、性别等字段 从input.txt(从附件下载)中读取其中的学生信息,并存入学生集合list中 对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生,依次输出学号、姓名、出生日期、性别并用空格隔开,java
时间: 2024-02-25 14:58:09 浏览: 68
好的,以下是实现该功能的 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;
// 定义学生类
class Student {
private String id; // 学号
private String name; // 姓名
private LocalDate birth; // 出生日期
private String gender; // 性别
public Student(String id, String name, LocalDate birth, String gender) {
this.id = id;
this.name = name;
this.birth = birth;
this.gender = gender;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public LocalDate getBirth() {
return birth;
}
public String getGender() {
return gender;
}
@Override
public String toString() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return String.format("%s %s %s %s", id, name, formatter.format(birth), gender);
}
}
public class SortStudents {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
// 读取学生信息
try (Scanner scanner = new Scanner(new File("input.txt"))) {
while (scanner.hasNextLine()) {
String[] parts = scanner.nextLine().split("\\s+");
String id = parts[0];
String name = parts[1];
LocalDate birth = LocalDate.parse(parts[2], DateTimeFormatter.ISO_LOCAL_DATE);
String gender = parts[3];
students.add(new Student(id, name, birth, gender));
}
} catch (FileNotFoundException e) {
System.err.println("File not found: input.txt");
System.exit(1);
}
// 按出生日期排序
Collections.sort(students, Comparator.comparing(Student::getBirth));
// 将排序后的学生信息输出到文件
try (PrintWriter writer = new PrintWriter(new File("output.txt"))) {
for (Student student : students) {
writer.println(student.toString());
}
} catch (FileNotFoundException e) {
System.err.println("Cannot create file: output.txt");
System.exit(1);
}
}
}
```
你可以将上述代码保存为 `SortStudents.java` 文件,并将 `input.txt` 文件放在同一目录下,然后在命令行中执行 `javac SortStudents.java` 编译代码,再执行 `java SortStudents` 命令,即可生成排序后的学生信息文件 `output.txt`。
阅读全文