题目:键盘录入3个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件,最后在从文件中把读取数据显示在控制台
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Student {
private String name;
private double chinese;
private double math;
private double english;
private double sum = 0;//计算三门科目的总分
public double getSum() {
return sum;
}
public void setSum(double sum) {
this.sum = sum;
}
@Override
public String toString() {
return name + "," + chinese + ", " + math + "," + english;
}
public Student(String name, double chinese, double math, double english) {
this.name = name;
this.chinese = chinese;
this.math = math;
this.english = english;
this.sum = getChinese() + getMath() + getEnglish();//直接在构造器当中进行累加
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getChinese() {
return chinese;
}
public void setChinese(double chinese) {
this.chinese = chinese;
}
public double getMath() {
return math;
}
public void setMath(double math) {
this.math = math;
}
public double getEnglish() {
return english;
}
public void setEnglish(double english) {
this.english = english;
}
public Student() {
}
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
ArrayList<Student> stuList = new ArrayList<>();//学生集合
File file = new File("src/main/java/zhao/stu.txt");//txt文件的初始化储存位置
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
String name;
double chinese, math, english;
for (int i = 0; i < 3; i++) {
System.out.println("请录入第" + (i + 1) + "个学生信息:");
System.out.println("姓名:");
name = input.next();
System.out.println("语文成绩:");
chinese = input.nextDouble();
System.out.println("数学成绩:");
math = input.nextDouble();
System.out.println("英语成绩:");
english = input.nextDouble();
//将控制台接收到的学生对象添加进stuList列表当中
stuList.add(new Student(name, chinese, math, english));
}
//调用Stream流当中的sort方法,将总分作为参数进行排序,由大到小的顺序进行排序
stuList.stream().sorted((o1, o2) -> Double.compare(o2.getSum(), o1.getSum()));
Iterator<Student> iterator = stuList.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
//每次添加完一个学生对象之后,进性换行
bw.write(student.toString() + "\n");
}
bw.flush();//全部数据添加完成之后,更新数据流
System.out.println("数据写入文件完毕");
System.out.println("文件中的数据展示如下:");
System.out.println("姓名,语文成绩,数学成绩,英语成绩");
String line;
while ((line = br.readLine()) != null) {//每次读取一行,直到读到的是空行跳出该循环
System.out.println(line);
}
br.close();//关闭流,闭合原则
bw.close();;
}
}