编写一个Java程序,实现一下功能,要求 1.设计一个学生student类,包含学号、姓名、出生日期、性别等字段 2.从input.txt(从附件下载)中读取其中的学生信息,并存入学生集合list中 3.对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 4.将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生, 依次输出学号、姓名、出生日期、性别并用空格隔 开
时间: 2024-02-19 11:02:28 浏览: 63
好的,我可以帮您解决这个问题。以下是Java代码:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
try {
File inputFile = new File("input.txt");
Scanner scanner = new Scanner(inputFile);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] fields = line.split(" ");
String id = fields[0];
String name = fields[1];
String dateOfBirthString = fields[2];
Date dateOfBirth = new SimpleDateFormat("yyyy-MM-dd").parse(dateOfBirthString);
String gender = fields[3];
Student student = new Student(id, name, dateOfBirth, gender);
students.add(student);
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getDateOfBirth().compareTo(o2.getDateOfBirth());
}
});
try {
FileWriter writer = new FileWriter("output.txt");
for (Student student : students) {
writer.write(student.getId() + " " + student.getName() + " "
+ new SimpleDateFormat("yyyy-MM-dd").format(student.getDateOfBirth()) + " "
+ student.getGender() + "\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Student {
private String id;
private String name;
private Date dateOfBirth;
private String gender;
public Student(String id, String name, Date dateOfBirth, String gender) {
this.id = id;
this.name = name;
this.dateOfBirth = dateOfBirth;
this.gender = gender;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public String getGender() {
return gender;
}
}
```
这个程序将从 `input.txt` 文件中读取学生信息,并将学生信息存储到 `List` 中。然后,它将按照出生日期从早到晚排序,最后将排序后的学生信息写入 `output.txt` 文件中。
请注意,程序假定 `input.txt` 文件的格式是正确的,并且每行包含四个字段:学号、姓名、出生日期和性别,字段之间用空格分隔。程序还假定出生日期的格式为 `yyyy-MM-dd`。如果输入文件的格式与这些假设不一致,程序可能会出错。
输出文件的格式与输入文件的格式相同,每行包含四个字段:学号、姓名、出生日期和性别,字段之间用空格分隔。
阅读全文