需求:

  键盘录入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. Fundamentals of speech signal processing

    PDF版资料下载:链接:http://pan.baidu.com/s/1hrKntkw 密码:f2y9

  2. Android从零开始——Android开发环境的安装

    Android开发环境的安装 1 IDE Android可以使用开发的IDE有Eclipse 或者 Android Studio.Android Studio还处于v 0.1.x版本,是early a ...

  3. java分派

    变量被声明时的类型叫做变量的静态类型(Static Type) 又叫明显类型(Apparent Type).变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type). 根据对象的类型而 ...

  4. .NET WinForm画树叶小程序

    看了一片文章(http://keleyi.com/a/bjac/nurox416.htm),是使用分型画树叶,代码是Java的,因为Java很久没弄了,改用C#实现,下载地址: 画树叶小程序下载 核心 ...

  5. swift学习笔记之-继承

    //继承 import UIKit /* 继承(Inheritance): 1.一个类可以继承(inherit)另一个类的方法(methods).属性(properties)和其它特性.当一个类继承其 ...

  6. 用单例模式封装常用方法 utils class v1.0

    utils class v1.0:The common methods used in our JS are included. * by sarah on 2016/01/28 var utils ...

  7. .NET破解之太乐地图下载器【非暴破】

    不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰…… 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, ...

  8. SQL Server 分组 去除从复列

    下面先来看看例子: table表 字段1 字段2 id        name 1           a 2           b 3           c 4           c 5    ...

  9. 参加2015年TOP100会议的零散笔记

    2015年出差很少,感到整个技术都已经荒废了,收到12月份TOP100的会议通知后,还是去充点电吧,不然心慌啊.对于软件大会这种大杂烩式的会议已经没有多少兴趣了,看看这个TOP100组织得有何不同? ...

  10. CSS 包含选择器(九)

    一.包含选择器 包含选择器中前后两部分之间以空格隔开,根据左侧选择符指定的祖先元素,然后在该元素下寻找匹配右侧的选择侧符的下级元素 定义包含选择器时,必须保证在HTML结构中第一个对象能够包含第二个对 ...