黑马程序员:集合和IO流的结合运用(重点)
来源:互联网 发布:raysource软件下载 编辑:程序博客网 时间:2024/05/16 16:59
<span style="font-size:14px;color:#000000;">/* * 我有一个学生类,这个类包含一下成员变量:姓名,语文成绩,数学成绩,英语成绩。 * 请从键盘录入5个学生信息,然后按照自己定义的格式存储到文本文件中。 * 要求被存储的学生按照分数从高到低排序。 * * 分析: * A:写一个学生类,有4个成员变量。 * B:用Scanner实现键盘录入。 * C:把这多个学生进行存储。用集合。 * 那么,用哪个集合呢? * 由于最终需要排序,所以,我们选择TreeSet集合。 * D:遍历集合,获取到集合中的每一个数据,用输出流写到文本文件。 * namechinesemathenglish */</span>
<pre class="java" name="code"><span style="font-size:14px;color:#000000;">package cn.itcast_01;public class Student {private String name;private int chinese;private int math;private int english;public Student() {}public Student(String name, int chinese, int math, int english) {super();this.name = name;this.chinese = chinese;this.math = math;this.english = english;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getChinese() {return chinese;}public void setChinese(int chinese) {this.chinese = chinese;}public int getMath() {return math;}public void setMath(int math) {this.math = math;}public int getEnglish() {return english;}public void setEnglish(int english) {this.english = english;}public int getSum() {return this.chinese + this.math + this.english;}}package cn.itcast_01;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.Comparator;import java.util.Scanner;import java.util.TreeSet;/* * 我有一个学生类,这个类包含一下成员变量:姓名,语文成绩,数学成绩,英语成绩。 * 请从键盘录入5个学生信息,然后按照自己定义的格式存储到文本文件中。 * 要求被存储的学生按照分数从高到低排序。 * * 分析: * A:写一个学生类,有4个成员变量。 * B:用Scanner实现键盘录入。 * C:把这多个学生进行存储。用集合。 * 那么,用哪个集合呢? * 由于最终需要排序,所以,我们选择TreeSet集合。 * D:遍历集合,获取到集合中的每一个数据,用输出流写到文本文件。 * namechinesemathenglish */public class StudentTest {public static void main(String[] args) throws IOException {// 写一个学生类,有4个成员变量。System.out.println("学生信息录入开始");// 定义TreeSet集合TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {// 主要条件int num = s2.getSum() - s1.getSum();// 分析次要条件// 当总分相同,还得继续比较每一门的分数是否相同int num2 = (num == 0) ? s1.getChinese() - s2.getChinese() : num;int num3 = (num2 == 0) ? s1.getMath() - s2.getMath() : num2;// 当语文,数学,英语成绩都相同的,我们还得继续判断姓名是否相同。int num4 = (num3 == 0) ? s1.getName().compareTo(s2.getName()): num3;return num4;}});for (int x = 0; x < 5; x++) {// 用Scanner实现键盘录入。Scanner sc = new Scanner(System.in);// 键盘录入数据System.out.println("请输入第" + (x + 1) + "个学生的姓名:");String name = sc.nextLine();System.out.println("请输入第" + (x + 1) + "个学生的语文成绩:");int chinese = sc.nextInt();System.out.println("请输入第" + (x + 1) + "个学生的数学成绩:");int math = sc.nextInt();System.out.println("请输入第" + (x + 1) + "个学生的英语成绩:");int english = sc.nextInt();// 把数据封装到学生对象中Student s = new Student();s.setName(name);s.setChinese(chinese);s.setMath(math);s.setEnglish(english);ts.add(s);}// 遍历集合,获取到集合中的每一个数据,用输出流写到文本文件。BufferedWriter bw = new BufferedWriter(new FileWriter("students.txt"));bw.write("姓名\t语文\t数学\t英语");bw.newLine();bw.flush();for (Student s : ts) {StringBuilder sb = new StringBuilder();sb.append(s.getName()).append("\t").append(s.getChinese()).append("\t").append(s.getMath()).append("\t").append(s.getEnglish());bw.write(sb.toString());bw.newLine();bw.flush();}bw.close();System.out.println("学生信息录入成功");}}</span>
0 0
- 黑马程序员:集合和IO流的结合运用(重点)
- 黑马程序员:管道流(PipedInputStream)介绍:IO和多线程结合的类
- 黑马程序员--集合的重点掌握部分
- 黑马程序员——管道流:PipedInputStream和PipedOutputStream与线程的结合运用
- 黑马程序员-集合容器的运用
- 黑马程序员:Java基础总结----集合与IO的结合[Properties类]
- 黑马程序员---IO和集合的小练习
- 黑马程序员 IO和集合的小练习
- 黑马程序员_集合和IO学习
- 黑马程序员——java集合之斗地主和升级的集合运用总结
- 黑马程序员—装箱拆箱与IO流重点
- 黑马程序员---反射和JavaBean(重点)
- 黑马程序员--File类删除目录,复制目录。打印流(装饰类),对象的序列化流,集合IO的结合使用
- 黑马程序员--jdk1.5的新特性:泛型(重点,集合中的泛型一定要会)
- 黑马程序员----IO(Properties集合)
- 黑马程序员---代理(重点)
- 黑马程序员--javabean(重点)
- 黑马程序员---集合框架之Map集合重点盲点总结
- [翻译]我的手势都去哪里了?
- android.app.FragmentManager和android.support.v4.app.FragmentManager
- JVM系列三:JVM参数设置、分析
- HTML框架
- 基础知识整理
- 黑马程序员:集合和IO流的结合运用(重点)
- QT QPlainTextEdit 获取某行内容
- Mysql学习笔记<2>数据表SQL
- C# JSONHelper之Json转换方法大全
- Servlet/JSP中的路径,Tomcat部署项目时问题
- Web image 详解(网络图像)
- 位1计算的优化
- Linux环境中gdb调试C++工程基础命令
- MySQL与MongoDB之SQL语法对比