需求:

  键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

分析:
  A:创建学生类
  B:创建集合对象
      TreeSet<Student>
  C:键盘录入学生信息存储到集合
  D:遍历集合,把数据写到文本文件

首先创建个学生类

 package zl_Test;
/**
* 这是个记录学生成绩类
* @author LZL
*
*/
public class Student {
private String name;
private int chinese;
private int math;
private int english; public Student() {
super();
// TODO Auto-generated constructor stub
} 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.english + this.math; } }

具体实现类:

 package zl_Test;

 import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet; public class StudentDemo { public static void main(String[] args) throws IOException {
// 创建集合对象
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
// 比较器
public int compare(Student s1, Student s2) { int num1 = s2.getsum() - s1.getsum();
int num2 = num1 == 0 ? s2.getChinese() - s1.getChinese() : num1;
int num3 = num2 == 0 ? s2.getMath() - s1.getMath() : num2;
int num4 = num3 == 0 ? s2.getName().compareTo(s1.getName())
: num3;
return num4; }
}); // 键盘录入学生信息
for (int x = 0; x < 5; x++) {
Scanner sc = new Scanner(System.in); System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入语文成绩");
int chinese = sc.nextInt();
System.out.println("请输入数学成绩");
int math = sc.nextInt();
System.out.println("请输入英语成绩");
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("student.txt"));
// 先写文本里面的内容
bw.write("学生成绩记录");
bw.newLine();
bw.flush();
bw.write("语文成绩" + "\t" + "数学成绩" + "\t" + "英语成绩");
bw.newLine();
bw.flush(); // 遍历集合,把得到的数据添加到文件中
for (Student student : ts) {
// 对得到的信息进行拼接
StringBuilder sb = new StringBuilder();
sb.append(student.getName() + "\t\t")
.append(student.getChinese() + "\t\t")
.append(student.getMath() + "\t\t")
.append(student.getEnglish());
bw.write(sb.toString());
bw.newLine();
}
bw.close();
System.out.println("学生成绩存储完毕");
}
}

IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中的更多相关文章

  1. Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例

    1.  键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析:   A:创建学生类   B:创建集合对象      TreeSet<Student>   ...

  2. 键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...

    一.有一道很有意思的数组操作相关编程题,闲来无事用JS解决了一下,问题描述如下: (1) 键盘录入6个int类型的数据存入数组arr中: (2) 将arr数组中的内容反转: (3) 将反转后的数组角标 ...

  3. java从键盘输入学生成绩,找出最高分,并输出学生成绩等级。

    /*从键盘输入学生成绩,找出最高分,并输出学生成绩等级:成绩 >=最高分-10 等级为A成绩 >=最高分-20 等级为B成绩 >=最高分-30 等级为C其余为 等级为D 提示:先输入 ...

  4. 从键盘读入学生成绩,找出最高分, 并输出学生成绩等级(Java)

    从键盘读入学生成绩,找出最高分, 并输出学生成绩等级 一.题目 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为'A' 成绩>=最高分-20 等级为'B' ...

  5. IO流(1)-键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

    1.先写一个Student类 public class Student { private String name; private int chinese; private int math; pr ...

  6. java可变参数例子:求学生成绩信息,不确定课程数

    可变参数特点: 1)...只能出现在参数列表的最后2)...位于变量类型和变量名之间3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数 //可变参数也可用 ...

  7. [项目记录] 用c语言完成的一个学生成绩管理系统

    一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...

  8. Day_14【IO流】扩展案例1_缓冲区字符输入、输出流,键盘录入,contains()方法的统一运用

    分析以下需求,并用代码实现 实现一个验证码小程序,要求如下: 1. 在项目根目录下新建一个文件:data.txt,键盘录入3个字符串验证码,并存入data.txt中,要求一个验证码占一行: 2. 键盘 ...

  9. Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader

    字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...

随机推荐

  1. java微信开发(wechat4j)——发送客服消息

    微信支持主动发送客服消息.如果你要实现此功能,需要使用CustomerMsg类. 获得access_token access_token请求之后有一个过期时间,微信平台建议你使用一个中控服务器来定时刷 ...

  2. Bootstrap 我的学习记录2 栅格系统初识

    以下理论内容copy自bootstrap中文网(一个不错的bootstrap学习网站). 栅格系统 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport) ...

  3. PHP写日志函数

    初学,写一个函数用于存储日志调试. function WriteLog($msg) { $filename = dirname(__FILE__) ."\\Debug.log"; ...

  4. 人人都应该学习Markdown

    Markdown是一门新兴的标记语言,已经有12年历史了.随着它在全球范围内的流行,很多人已经听说.熟识或者开始使用了. 首先,Markdown既不是工具,也不是程序语言,而是一种十分轻量级的标记语言 ...

  5. 聊聊Function的bind()

    bind顾名思义,绑定. bind()方法会创建一个新函数,当这个新函数被调用时,它的this值是传递给bind()的第一个参数,它的参数是bind()的其他参数和其原本的参数. 上面这个定义最后一句 ...

  6. MapGIS转Shp文件的单位问题

    在MapGIS浏览查看一下数据,各种不习惯:用mapgis自带的转shp功能,属性表会出错:利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式.但经常会遇到一个单位问题 ...

  7. C#获取本地系统日期格式

    我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04).时间(12:12:12).日期+时间(2008-09-04 12 ...

  8. Python数据结构与算法--数据类型

    从数据类型开始 Python支持面向对象的编程范式,这意味着Python把数据看成解决问题的关键. 在Python中,类似其他的面向对象的编程语言, 我们定义一个类,用来描述数据是什么 (状态) 和数 ...

  9. C语言中Static和Const关键字的的作用

    程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块 ...

  10. 关于tableView中tableHeaderView/tableFooterView/sectionHeader/sectionFooter/contentInset的理解

    其实每个人的理解有所不同,找到最有利于自己的理解方式即可.有人把Cell,tableHeaderView,tableFooterView,sectionHeader,sectionFooter这些属性 ...