用java写。编写一个程序,实现一下功能,要求 设计一个学生student类,包含学号、姓名、出生日期、性别等字段 从input.txt(从附件下载)中读取其中的学生信息,并存入学生集合list中 对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生,依次输出学号、姓名、出生日期、性别并用空格隔开
时间: 2024-02-06 16:12:03 浏览: 76
数据库设计与实现-Java项目实战精编
好的,以下是 Java 代码实现:
```java
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
// 学生类
class Student implements Comparable<Student> {
private String id; // 学号
private String name; // 姓名
private Date birthday; // 出生日期
private String gender; // 性别
public Student(String id, String name, Date birthday, String gender) {
this.id = id;
this.name = name;
this.birthday = birthday;
this.gender = gender;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public Date getBirthday() {
return birthday;
}
public String getGender() {
return gender;
}
// 实现 Comparable 接口,用于排序
@Override
public int compareTo(Student o) {
return this.birthday.compareTo(o.getBirthday());
}
// 重写 toString 方法,用于输出
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return id + " " + name + " " + sdf.format(birthday) + " " + gender;
}
}
public class Main {
public static void main(String[] args) {
File inputFile = new File("input.txt");
File outputFile = new File("output.txt");
// 读取学生信息
List<Student> students = new ArrayList<>();
try (Scanner scanner = new Scanner(inputFile)) {
while (scanner.hasNext()) {
String line = scanner.nextLine();
String[] parts = line.split(" ");
String id = parts[0];
String name = parts[1];
Date birthday = parseDate(parts[2]);
String gender = parts[3];
students.add(new Student(id, name, birthday, gender));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 按照出生日期排序
Collections.sort(students);
// 输出到文件
try (PrintWriter writer = new PrintWriter(outputFile)) {
for (Student student : students) {
writer.println(student);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// 将日期字符串解析成 Date 对象
private static Date parseDate(String dateString) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
}
```
你可以将这段代码保存为 `Main.java` 文件,并将 `input.txt` 文件放在同一目录下,然后在命令行中运行 `java Main` 命令即可。输出结果将会保存在 `output.txt` 文件中。
阅读全文