问题:
由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
代码:
主方法:
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
List<Student> studentList = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
while (!input.equals("exit")) {
String[] info = input.split("#"); // 按照#拆分字符串
int id = Integer.parseInt(info[0]);
String name = info[1];
int age = Integer.parseInt(info[2]);
Student student = new Student(id, name, age);
studentList.add(student);
input = scanner.nextLine();
}
scanner.close();
// 按照年龄正序排序学生列表
Collections.sort(studentList);
// 遍历集合并将学生信息写入记事本
try {
FileWriter writer = new FileWriter("student.txt");
for (Student student : studentList) {
writer.write(student.getId() + "#" + student.getName() + "#" + student.getAge() + "\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
学生类:
public class Student implements Comparable<Student> {
private int id;
private String name;
private int age;
// 构造方法
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
// Getter和Setter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Student o) {
return this.age - o.age;
}
}