A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝色风信子 中级黑马   /  2016-6-4 22:13  /  396 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Student implements Comparable<Student>
  2. {
  3.         private String name;
  4.         private double yuwen;
  5.         private double math;
  6.         private double english;
  7.         public Student(String name,double yuwen, double math, double english)
  8.         {
  9.                 super();
  10.                 this.name=name;
  11.                 this.yuwen = yuwen;
  12.                 this.math = math;
  13.                 this.english = english;
  14.         }
  15.         public String getName()
  16.         {
  17.                 return name;
  18.         }
  19.         public void setName(String name)
  20.         {
  21.                 this.name = name;
  22.         }
  23.         public double getYuwen()
  24.         {
  25.                 return yuwen;
  26.         }
  27.         public void setYuwen(double yuwen)
  28.         {
  29.                 this.yuwen = yuwen;
  30.         }
  31.         public double getMath()
  32.         {
  33.                 return math;
  34.         }
  35.         public void setMath(double math)
  36.         {
  37.                 this.math = math;
  38.         }
  39.         public double getEnglish()
  40.         {
  41.                 return english;
  42.         }
  43.         public void setEnglish(double english)
  44.         {
  45.                 this.english = english;
  46.         }
  47.         @Override
  48.         public int compareTo(Student stu)
  49.         {
  50.                 return (int)((stu.english+stu.math+stu.yuwen)-(this.yuwen+this.math+this.english));
  51.         }
  52.        
  53. }
  54. import java.io.BufferedWriter;
  55. import java.io.FileWriter;
  56. import java.io.IOException;
  57. import java.util.Scanner;
  58. import java.util.TreeSet;

  59. /*
  60. * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),
  61. * 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
  62. * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
  63. *
  64. * 分析:
  65. * 将学生存储到集合中,按成绩排序,然后遍历集合,通过IO流写入文件
  66. * */
  67. public class Demo4
  68. {
  69.         public static void main(String[] args) throws IOException
  70.         {
  71.                 //定义TreeSet集合存储学生,可以根据学生总成绩对学生进行排序
  72.                 TreeSet<Student> ts=new TreeSet<>();
  73.                 add(ts);
  74.                 method(ts);
  75.         }
  76.         //键盘录入学生信息,并存储到集合中
  77.         public static void add(TreeSet<Student> ts)
  78.         {
  79.                 Scanner sc=new Scanner(System.in);
  80.                 while(true)
  81.                 {
  82.                         System.out.println("请输入学生姓名:");
  83.                         System.out.println("结束信息录入请输入over");
  84.                         String name=sc.next();
  85.                         if(name.equals("over"))
  86.                                 return;
  87.                         System.out.println("请输入语文成绩");
  88.                         double yuwen=sc.nextDouble();
  89.                         System.out.println("请输入数学成绩");
  90.                         double math=sc.nextDouble();
  91.                         System.out.println("请输入英语成绩");
  92.                         double english=sc.nextDouble();
  93.                         ts.add(new Student(name,yuwen,math,english));
  94.                 }
  95.         }
  96.         //遍历集合,通过字符流缓冲区将学生成绩信息写入到文件中.
  97.         public static void method(TreeSet<Student> ts) throws IOException
  98.         {
  99.                 BufferedWriter br=new BufferedWriter(new FileWriter("C:\\Users\\pan\\Desktop\\stu.txt"));
  100.                 for(Student s : ts)
  101.                 {
  102.                         br.write(s.getName()+":        语文"+s.getYuwen()+"        数学"+s.getMath()+"        英语"+s.getEnglish()+"        总分"+(s.getEnglish()+s.getMath()+s.getYuwen()));
  103.                         br.newLine();
  104.                         br.flush();
  105.                 }
  106.                 br.close();
  107.         }
  108. }
复制代码

2 个回复

倒序浏览
过来学习学习,顺便支持一下
回复 使用道具 举报
支持一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马