15_学生信息的存储与排序

来源:互联网 发布:seo的站外优化流程 编辑:程序博客网 时间:2024/06/15 09:30

有五个学生,每个学生有3门课的成绩。
从键盘输入以上数据(包括姓名,三门成绩),
输入的格式,如:zhangsan,30,40,60计算出总成绩,
并把学生的信息和计算出的总分数按高低顺序存放都在磁盘文件“stud.txt”中。


1,描述学生对象。
2,定义一个课操作学生对象的工具类。


思想:
1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
2,因为学生很多,那么就需要存储,使用到集合。因为要对学生的总分排序。所以可以使用TreeSet。
3,将集合的信息写入到一个文件中。
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.util.Collections;import java.util.Comparator;import java.util.Set;import java.util.TreeSet;public class Demo {public static void main(String[] args) throws Exception {// TODO Auto-generated method stub//反转比机器Comparator<Student> cmp=Collections.reverseOrder();Set<Student> stus=StudentInfoTool.getStudents(cmp);StudentInfoTool.write2File(stus);}}class Student implements Comparable<Student>{private String name;private int math,cn,eng;private int sum;public Student(String name, int math, int cn, int eng) {this.name = name;this.math = math;this.cn = cn;this.eng = eng;this.sum=math+cn+eng;}public String getName() {return name;}public int getSum() {return sum;}@Overridepublic int compareTo(Student o) {// TODO Auto-generated method stubint num=new Integer(this.sum).compareTo(new Integer(o.sum));if(num==0)return this.name.compareTo(o.name);return num;}@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stubif(!(obj instanceof Student))throw new ClassCastException("类型不匹配");Student s=(Student)obj;return this.name.equals(s.name)&&this.sum==s.sum;}@Overridepublic int hashCode() {// TODO Auto-generated method stubreturn this.name.hashCode()+sum*11;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "Student["+name+", "+math+", "+cn+", "+eng+"]";}}class StudentInfoTool{public static Set<Student> getStudents() throws Exception{return getStudents(null);}public static Set<Student> getStudents(Comparator<Student> cmp) throws Exception{BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));String line=null;Set<Student> stud=null;if(cmp==null)stud=new TreeSet<Student>();elsestud=new TreeSet<Student>(cmp);while((line=bufr.readLine())!=null){if("over".equals(line))break;String [] info=line.split(",");Student stu=new Student(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[2]),Integer.parseInt(info[3]));stud.add(stu);}bufr.close();return stud;}public static void write2File(Set<Student> stus) throws IOException{BufferedWriter bufw=new BufferedWriter(new FileWriter("D:\\a\\stu.txt"));for(Student stu:stus){bufw.write(stu.toString()+"\t");bufw.write(stu.getSum()+"");bufw.newLine();bufw.flush();}bufw.close();}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 六个月宝宝大便干燥怎么办 五个月宝宝拉肚子怎么办拉水样 2个月婴儿拉稀水怎么办 两个月的宝宝拉肚子怎么办 两天了不拉大便怎么办 25天的宝宝便秘怎么办 2个月宝宝便秘怎么办 猫拉绿色稀水怎么办 50天的宝宝便秘怎么办 人工喂养大便次数少怎么办 4个月宝宝肠炎怎么办? 三个月的宝宝拉肚子有奶瓣怎么办 吃米粉后不拉屎怎么办 宝宝拉绿色稀水怎么办 3个月宝宝肠胃炎怎么办 两个月婴儿拉水怎么办 3个月宝宝拉绿水怎么办 宝宝拉绿色的水怎么办 宝宝大便绿又水怎么办 8个月婴儿便秘怎么办 2个月婴儿便秘怎么办 四个月宝宝拉稀带有泡沫怎么办 六个月宝宝拉肚子怎么办拉水 婴儿拉的是沫怎么办 婴儿拉泡沫屎是怎么办 宝宝吃奶粉上火大便干燥怎么办 没满月的宝宝拉肚子怎么办 婴儿吃奶粉上火不大便怎么办 四个月宝宝拉沫怎么办 4个月小孩拉肚子怎么办 3个月的宝宝拉稀怎么办 宝宝没喝过奶粉怎么办 宝宝喝冰酸奶咳嗽了怎么办 7个月不爱喝奶怎么办 宝宝不认妈妈该怎么办 九个月宝宝不喝牛奶怎么办 吃羊肉和西瓜后怎么办 娃儿感冒了很咳怎么办 5岁娃儿经常感冒发烧怎么办 娃儿冷得发抖感冒怎么办 吃羊肉和茶后怎么办