IO流综合练习
来源:互联网 发布:求数组最大值和最小值 编辑:程序博客网 时间:2024/05/01 20:48
有5个学生有3门课的成绩,从键盘输入以上数据(包括学生姓名和三门课的成绩),输入的格式为zhangsan,30,40,50,
计算出总成绩,并把学生的信息和计算出的总分数按有高到低的顺序存放在磁盘文件a.txt中。
分析:
1.描述学生对象
2.定义一个可操作学生对象的工具类
思路:
1.通过获取键盘录入一行数据,并将该行中的数据取出封装成学生对象。
2.因为学生对象有很多,那么久需要存储,使用到集合。
又因为要对学生的总分进行排序,所以要使用TreeSet。
3.将集合中的信息写入到一个文件中。
public class Student implements Comparable<Student>{ private String name; private int ma,cn,en; private int sum; public Student(String name, int ma, int cn, int en) { super(); this.name = name; this.ma = ma; this.cn = cn; this.en = en; sum = ma + cn + en; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMa() { return ma; } public void setMa(int ma) { this.ma = ma; } public int getCn() { return cn; } public void setCn(int cn) { this.cn = cn; } public int getEn() { return en; } public void setEn(int en) { this.en = en; } public int getSum() { return sum; } public void setSum(int sum) { this.sum = sum; } @Override public int compareTo(Student s) { int num = new Integer(this.sum).compareTo(new Integer(s.sum)); if(num==0) return this.name.compareTo(s.name); return num; } @Override public int hashCode() { return name.hashCode()+sum*31; } @Override public boolean equals(Object obj) { if(!(obj instanceof Student)) throw new ClassCastException("类型不匹配"); Student s = (Student)obj; return this.name.equals(s.name)&&this.sum==s.sum; } @Override public String toString() { return "Student [name=" + name + ", ma=" + ma + ", cn=" + cn + ", en=" + en + "]"; }}public class StudentInfoTool { public static Set<Student> getStudents() throws IOException{ return getStudents(null); } public static Set<Student> getStudents(Comparator<Student> cmp) throws IOException{ BufferedReader bufr = 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=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])); stus.add(stu); } bufr.close(); return stus; } public static void write2File(Set<Student> stus) throws IOException{ BufferedWriter bufw = new BufferedWriter( new FileWriter("E:\\a.txt")); for(Student s :stus){ bufw.write(s.toString()+"\t"); bufw.write(s.getSum()+""); bufw.newLine(); bufw.flush(); } bufw.close(); }}public class StudentInfoTest { public static void main(String[] args) throws IOException{ Comparator<Student> cmp = Collections.reverseOrder(); Set<Student> stus = StudentInfoTool.getStudents(cmp); StudentInfoTool.write2File(stus); }}
0 0
- IO流综合练习
- JAVASE基础 Item -- IO流综合练习
- 黑马程序员—集合与IO流综合练习
- javase练习(排序,IO流,机试,综合)
- 黑马程序员——IO流8:IO流综合练习
- 23-IO流-47-IO流(综合练习-文件清单列表)
- 46-IO流(Properties集合的-练习)12 47-IO流(综合练习-文件清单列表. 48-IO流(打印流-PrintStream) 49-IO流(打印流-PrintWriter).
- javaday51_IO流_IO综合练习
- IO综合练习--文件切割和文件合并
- 综合练习
- 综合练习
- IO流练习
- IO流(Properties练习)
- IO流练习
- IO流的练习
- IO流_练习
- Java IO流--练习
- IO流练习
- oracle 存储过程 循环游标的简单实用示例
- Git分布式代码版本控制
- firefox 浏览器安装adobe flash player
- POJ 2418 Hardwood Species(trie的串排序运用)
- 学习的另一种Servlet实现。
- IO流综合练习
- POJ 1673 EXOCENTER OF A TRIANGLE
- linux之ACL权限学习笔记
- NetworkManager 替代工具 wicd
- android开发之Service深入分析全解
- 一个人的地老天荒
- 存储过程访问其他用户表权限不足问题
- 使用WinDbg —— .NET篇 (一)
- python Debug 、IDE、编辑环境选择