键盘录入学生信息,同时输出到文本文档和控制台

mac2024-04-22  11

按学生总成绩从大到小的顺序输出学生信息,使用treeset传入学生对象,比较总成绩大小,再将学生姓名,各科成绩包装成字符串,通过高效字符流写入指定(创建)的文本文档。

测试类: package org.westos.demo7; import java.io.BufferedOutputStream; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.Comparator; import java.util.Scanner; import java.util.TreeSet; public class MyTest4 { public static void main(String[] args) throws IOException { // 需求:键盘录入3个学生信息(姓名,语文成绩(chineseScore),数学成绩(mathScore),英语成绩(englishScore)), // 按照总分从高到低存入文本文件 //- 分析: //- a: 创建一个学生类: 姓名,语文成绩(chineseScore),数学成绩(mathScore),英语成绩(englishScore) //- b: 因为要排序,所以需要选择TreeSet进行存储学生对象 //- c: 键盘录入学生信息,把学生信息封装成一个学生对象,在把学生对象添加到集合中 //- d: 创建一个高效的字符输出流对象 //- e: 遍历集合,把学生的信息写入到指定的文本文件中 //- f: 释放资源 TreeSet<Student> treeSet = new TreeSet<>(new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { int num = s1.getTotalScore() - s2.getTotalScore(); //如果总分一样,比较姓名 int num2=num==0?s1.getName().compareTo(s2.getName()):num; return -num2; } }); for (int i = 1; i <= 3; i++) { Scanner scanner = new Scanner(System.in); Student student = new Student(); System.out.println("请输入第" + i + "个学生的姓名"); String name = scanner.nextLine(); student.setName(name); System.out.println("请输入第" + i + "个学生的语文成绩"); int yw = scanner.nextInt(); student.setChineseScore(yw); System.out.println("请输入第" + i + "个学生的数学成绩"); int sx = scanner.nextInt(); student.setMathScore(sx); System.out.println("请输入第" + i + "个学生的英语成绩"); int yy = scanner.nextInt(); student.setEnglishScore(yy); //把学生对象装进集合 treeSet.add(student); } //打印排序结果 System.out.println("序号\t姓名\t语文\t数学\t英语\t总分"); BufferedWriter bw = new BufferedWriter(new FileWriter("Student.txt")); int j=1; for (Student student : treeSet) { String chinese = new String(String.valueOf(student.getChineseScore())+"\t"); String math = new String(String.valueOf(student.getMathScore())+"\t"); String english = new String(String.valueOf(student.getEnglishScore())+"\t"); String total = new String(String.valueOf(student.getTotalScore())+"\t"); bw.write(student.getName()+"\t"); bw.write(chinese); bw.write(math); bw.write(english); bw.write(total); bw.newLine(); bw.flush(); System.out.println((j++)+"\t"+student.getName()+"\t"+student.getChineseScore()+"\t"+student.getMathScore()+"\t"+student.getEnglishScore()+"\t"+student.getTotalScore()); } bw.close(); } } Student类: package org.westos.demo7; import java.util.Objects; public class Student { private String name; private int chineseScore; private int mathScore; private int englishScore; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getChineseScore() { return chineseScore; } public void setChineseScore(int chineseScore) { this.chineseScore = chineseScore; } public int getMathScore() { return mathScore; } public void setMathScore(int mathScore) { this.mathScore = mathScore; } public int getEnglishScore() { return englishScore; } public void setEnglishScore(int englishScore) { this.englishScore = englishScore; } //获取总分的方法 public int getTotalScore(){ return this.chineseScore+this.mathScore+this.englishScore; } }
最新回复(0)