【java编程】IO流和集合类综合题目
来源:互联网 发布:手机淘宝收获地址吗 编辑:程序博客网 时间:2024/06/10 10:01
需求:
1.有5个学生,每个学生有三门功课
2.从键盘输入以上数据(姓名,三门课成绩)
3.输入格式为:zhangshan,30,40,60并计算出总成绩
4.把学生信息和计算出来的总成绩按从低到高的顺序进行存储
思路:
1.先创建一个学生对象,实现比较器,让学生对象自身具备比较性,同时要复写hashcode()和equeas()方法
2.创建键盘录入,同时创建TreeSet集合,将键盘录入的数据存入集合
3.将集合中的数据存入到文件中
import java.io.*;import java.util.*;class StudentInfoTest{public static void main(String[] args) throws IOException{//自定义比较器Comparator<Student> cmp=Collections.reverseOrder();Set<Student> treeset=StudentInfoTool.getStudentInfo(cmp);StudentInfoTool.writeToFile(treeset);}}//创建学生对象class Student implements Comparable<Student>{private String name;private int cn;private int ma;private int en;private int sum;Student(String name,int cn,int ma,int en){this.name=name;this.cn=cn;this.ma=ma;this.en=en;sum=cn+ma+en;}public String getName(){return name;}public int getSum(){return sum;}//复写hashCode方法public int hashCode(){return this.name.hashCode()+sum*6;}//复写equals方法public boolean equals(Object obj){if(obj instanceof Student)throw new ClassCastException("类型不匹配!");Student str=(Student)obj;return this.name.equals(str.getName()) && this.sum==str.getSum();}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 "["+name+", "+cn+", "+ma+", "+en+"]";}}//创建操作学生的工具类class StudentInfoTool{//空比较器public static Set<Student> getStudentInfo() throws IOException{return StudentInfoTool.getStudentInfo(null);}public static Set<Student> getStudentInfo(Comparator<Student> cmp) throws IOException{//键盘录入BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//创建TreeSet集合,cmp为自定义比较器Set<Student> treeset=new TreeSet<Student>(cmp);String line=null;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]));treeset.add(stu);}bufr.close();System.out.println(treeset);return treeset;}//存入文件方法public static void writeToFile(Set<Student> stu) throws IOException{//文件写入流BufferedWriter bufw=new BufferedWriter(new FileWriter("studentInfo.txt"));//从集合里取出学生信息for(Student s : stu){bufw.write(s.toString()+"\t");bufw.write(s.getSum()+"");bufw.newLine();bufw.flush();}bufw.close();}}
0 0
- 【java编程】IO流和集合类综合题目
- JAVA-17.2-集合、IO流之综合演练
- Java--递归、字节流和集合综合
- Java——集合IO综合应用
- Java集合类综合
- java基础的综合应用(类的应用,文本拷贝,IO流,数组,集合,文件文件夹的创建)
- java集合、IO流
- java高级-集合和IO
- 黑马程序员—集合与IO流综合练习
- Java网络编程(三) java 流io和块io
- 集合和流的综合运用
- Java基础笔记四集合和IO流
- java集合框架图和IO流知识图
- Java IO流,Properties集合
- java基础IO流集合
- IO流综合练习
- 黑马程序员——JAVA基础--- 集合IO综合练习排序问题
- 【java基础:集合与IO】Properties集合与IO流相结合进行数据读取和存储的demostration
- SSL探索03
- 黑马程序员——java---数组
- 百度web前端面试题---2014
- 安卓短信过滤器小程序
- urllib2.HTTPError: HTTP Error 403: Forbidden
- 【java编程】IO流和集合类综合题目
- 领域驱动设计(转)
- Xcode常用插件使用及自动生成帮助文档
- 自己动手写操作系统之环境构建篇
- Android开发之监听或获取手机短信内容
- 框架的一些基础性内容
- 如何使用Word
- linux中$#、$?、$$[脚本运行时当前进程的id号]、$@、$*、$0、$1、$2、$-[上一个命令的最后一个参数]
- Android之ExpandableListView的属性(Group不展开)