练习:存储学生信息
来源:互联网 发布:ceph 写入数据失败 编辑:程序博客网 时间:2024/06/10 00:29
package exercise;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;//学生类,实现Comparable接口,能够比较class Student implements Comparable<Student> { private String name; private int ma, cn, en; private int sum; Student(String name, int ma, int cn, int en) { this.name = name; this.ma = ma; this.cn = cn; this.en = en; sum = ma + cn + en; } public String getName() { return name; } public int getSum() { return sum; } public int hashCode() { return name.hashCode() + sum * 78; } 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; } //覆盖compareTo方法 @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; } public String toString() { return "student[" + name + ", " + ma + ", " + cn + ", " + en + "]"; }}//工具类class StudentInfoTool { public static Set<Student> getStudents() throws IOException { return getStudents(null); } //Comparator比较器 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("stuinfo.txt")); for (Student stu : stus) { bufw.write(stu.toString() + "\t"); bufw.write(stu.getSum() + ""); bufw.newLine(); bufw.flush(); } bufw.close(); }}public class StudentInfoTest { public static void main(String[] args) throws IOException { // 按照成绩递增 Set<Student> stus1 = StudentInfoTool.getStudents(); // 按照成绩递减 Comparator<Student> cmp = Collections.reverseOrder(); Set<Student> stus2 = StudentInfoTool.getStudents(cmp); StudentInfoTool.write2File(stus2); }}
0 0
- 练习:存储学生信息
- 黑马程序员_学生信息本地存储练习
- 练习保存学生信息
- IO综合练习:录入学生成绩并将信息存储在硬盘文件中
- 学生信息查询之分页练习
- 学生信息表 成绩表+12章练习
- 输入学生信息并存储新文件
- 用链表来实现学生信息的存储
- 存储班长信息的学生类
- 存储班长信息的学生类
- 存储班长信息的学生类
- 存储班长信息的学生类
- 存储班长信息的学生类
- 11.1 存储班长信息的学生类
- 存储班长信息的学生类
- 存储班长信息的学生类
- 11.1存储班长信息的学生类
- 11.1存储班长学生的信息类
- 数据结构-环形队列(FIFO)多字节读写
- web技术概论第一周作业
- iOS中 读取相册,调用系统相机 技术分享
- 关于双向反射率BRDF的定义
- USB信息流格式总结
- 练习:存储学生信息
- iOS7下Cell高度自适应
- 继承到底是什么,为什么private static的方法不能被重写
- 算法面试题总结
- 第一个cocos项目
- leetcode284 : Peeking Iterator
- 2.Nim Game(尼姆博弈)
- CodeForces 429B Working out(dp,四个角递推)
- iOS 中textfield只允许输入字母和数字,限制长度