java实现 包名为xue 主类名为Text27 设计一个学生student类,包含学号、姓名、出生日期、性别等字段 从input.txt(从附件下载)中读取其中的学生信息,并存入学生集合list中 对学生集合list进行排序,按照出生日期从早到晚排序(即年龄由大到小) 将排序后的学生集合list输出到output.txt文件中,输出格式同input.txt:一行一个学生,依次输出学号、姓名、出生日期、性别并用空格隔开
时间: 2024-02-04 20:03:41 浏览: 69
C++学生成绩管理系统
好的,这是一个比较典型的Java IO操作题目,我将会提供代码实现,但是需要你自己去创建项目,以及拷贝input.txt文件到项目根目录下。
首先是Student类的定义,如下所示:
```java
package xue;
import java.util.Date;
public class Student implements Comparable<Student> {
private String id;
private String name;
private Date birthdate;
private String gender;
public Student(String id, String name, Date birthdate, String gender) {
this.id = id;
this.name = name;
this.birthdate = birthdate;
this.gender = gender;
}
// getter and setter methods
@Override
public int compareTo(Student o) {
return this.birthdate.compareTo(o.birthdate);
}
@Override
public String toString() {
return id + " " + name + " " + birthdate.toString() + " " + gender;
}
}
```
这里我们使用了Java中的Date类来表示学生的出生日期,同时实现了Comparable接口,以便后续对学生集合进行排序。
接下来是主类Text27的实现,如下所示:
```java
package xue;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
public class Text27 {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
String line = null;
while ((line = reader.readLine()) != null) {
String[] values = line.split(" ");
String id = values[0];
String name = values[1];
Date birthdate = new SimpleDateFormat("yyyy-MM-dd").parse(values[2]);
String gender = values[3];
Student student = new Student(id, name, birthdate, gender);
list.add(student);
}
} catch (IOException | ParseException e) {
e.printStackTrace();
}
Collections.sort(list);
try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
for (Student student : list) {
writer.write(student.toString());
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这里我们使用了Java中的IO类,通过BufferedReader和FileReader来读取input.txt文件,同时使用了BufferedWriter和FileWriter来输出到output.txt文件。在读取每一行内容时,我们使用了String类的split方法来将每一行中的字段拆分开来,再通过SimpleDateFormat类来解析出生日期,最后构造出Student对象并加入到集合中。
排序时,我们使用了Collections类中的sort方法,并传入一个实现了Comparable接口的Student对象列表,这样可以按照出生日期从早到晚排序。
最后,我们使用BufferedWriter将排序后的学生集合输出到output.txt文件中,并按照题目要求的格式输出每一行学生的信息。
希望能够帮助到你!
阅读全文