黑马程序员_王康把输入的学生成绩倒叙排列,并存入文本文件中 .
来源:互联网 发布:网络流量限制软件 编辑:程序博客网 时间:2024/04/30 06:58
//把输入的学生成绩倒叙排列,并存入文本文件中package com.io;/*** * @author 黑马_王康**/public class Student implements Comparable<Student>{ private String name; private int mt,cn,en; private int sum; Student( String name,int mt,int cn,int en){ this.name = name; this.mt = mt; this.cn = cn; this.en = en; sum = mt + cn + en; } public String getName(){ return name; } public int getSum(){ return sum; } public int getEn(){ return en; } public int getCn(){ return cn; } @Override public int compareTo(Student stu) { //实现compareTo方法 int num = new Integer(this.sum).compareTo(new Integer(stu.sum)); if(num == 0){ return this.name.compareTo(stu.name); } return num; } public int hashCode(){ //覆盖hashCode方法 return name.hashCode()+sum*66; } public boolean equals(Object obj){ //覆盖equals方法 if(!(obj instanceof Student)) throw new ClassCastException("类型不匹配"); Student stu = (Student)obj; return this.name.equals(stu.name)&&this.sum==stu.sum; } public String toString(){ //重写toString方法 return "student["+name+","+mt+","+cn+","+en+"]"; }}package com.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.util.Comparator;import java.util.Set;import java.util.TreeSet;/*** * @author 王康**/public class StudentInfo { public static Set<Student> getStudents() throws IOException{ return getStudents(null); } public static Set<Student> getStudents(Comparator<Student> cmp) throws IOException{ //传一个比较器参数,自定义比较器. BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //读入键盘输入 String line = null; Set<Student> stus = null; if(cmp == null) //判断所使用的比较器 stus = new TreeSet<Student>(); else //判断所使用的比较器 stus = new TreeSet<Student>(cmp); while((line=buf.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])); stus.add(stu); } buf.close(); return stus; } public static void Write2File(Set<Student> stu) throws IOException{ BufferedWriter bw = new BufferedWriter(new FileWriter("D:/testStudent.txt")); //创建输入流,并建立接受文件 for (Student s : stu) { bw.write(s.toString()+"\t"); bw.write(s.getSum()+""); bw.newLine(); bw.flush(); } bw.close(); }}package com.io;import java.io.IOException;import java.util.Collections;import java.util.Comparator;import java.util.Set;/*** 测试类* @author 王康**/public class StudentInfoTest { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { Comparator<Student> cstu = Collections.reverseOrder(); //定义比较器 Set<Student> stu = StudentInfo.getStudents(cstu); StudentInfo.Write2File(stu); }}启动程序:并输入如下lisi,32,43,54wangwu,56,77,45zhaoliu,54,66,76zhouqi,54,88,91sunba,87,90,83在D:/testStudent.txt会得到文本文件,内容如下:student[sunba,87,90,83] 260student[zhouqi,54,88,91] 233student[zhaoliu,54,66,76] 196student[wangwu,56,77,45] 178