给你个看起来简单点的,打印出来的效果是这样的:
望采纳啊亲
![]()
- package cn.liweidan.test1;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileDescriptor;
- import java.io.FileOutputStream;
- import java.io.PrintStream;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- /**
- * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
- * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个
- * 名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
- *
- * @author Weidan
- *
- */
- public class Demo02 {
- public static void main(String[] args) throws Exception {
- // 重定向
- System.setOut(new PrintStream(new BufferedOutputStream(
- new FileOutputStream(new File("stu.txt"))), true)); // 设置输出到文件,true表示输出后自动刷新
- System.out.println("姓名\t语文\t数学\t英语\t总分");
- // 创建容器
- List<Student> list = new ArrayList<Student>();
- // 创建对象
- Student s1 = new Student("张三", 90, 80, 75);
- Student s2 = new Student("李四", 95, 100, 75);
- Student s3 = new Student("王五", 70, 85, 89);
- // 分别添加到容器当中去
- list.add(s1);
- list.add(s2);
- list.add(s3);
- // 进行排序
- Collections.sort(list, new score());
- // 遍历输出学生信息
- for (Student student : list) {
- System.out.println(student.toString());
- }
- // 把输出还原为控制台
- System.setOut(new PrintStream(new BufferedOutputStream(
- new FileOutputStream(FileDescriptor.out)), true));// 设置回到控制台
- System.out.println("程序运行结束");
- }
- }
- class Student {
- private String name;
- private int chineseSco;
- private int mathSco;
- private int englishSco;
- public Student() {
- }
- public Student(String name, int chineseSco, int mathSco, int englishSco) {
- super();
- this.name = name;
- this.chineseSco = chineseSco;
- this.mathSco = mathSco;
- this.englishSco = englishSco;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getChineseSco() {
- return chineseSco;
- }
- public void setChineseSco(int chineseSco) {
- this.chineseSco = chineseSco;
- }
- public int getMathSco() {
- return mathSco;
- }
- public void setMathSco(int mathSco) {
- this.mathSco = mathSco;
- }
- public int getEnglishSco() {
- return englishSco;
- }
- public void setEnglishSco(int englishSco) {
- this.englishSco = englishSco;
- }
- //获得总分
- public int getScore() {
- return chineseSco + mathSco + englishSco;
- }
- @Override
- public String toString() {
- return name + "\t" + chineseSco + "\t" + mathSco + "\t" + englishSco
- + "\t" + getScore();
- }
- }
- /**
- * 业务排序类
- * @author Weidan
- *
- */
- class score implements Comparator<Student> {
- /**
- * 如果s1的总分比s2少,返回1,表示s2排在前面
- */
- @Override
- public int compare(Student s1, Student s2) {
- if (s1.getScore() - s2.getScore() < 0) {
- return 1;
- } else if (s1.getScore() - s2.getScore() == 0) {
- return 0;
- } else {
- return -1;
- }
- }
- }
复制代码 |