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

时间:2022-09-18 09:42:55

需求:

  键盘录入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数组中的内容反转&period;&period;&period;

    一.有一道很有意思的数组操作相关编程题,闲来无事用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流&lpar;1&rpar;-键盘录入学生信息&lpar;姓名&comma;语文成绩&comma;数学成绩&comma;英语成绩&rpar;&comma;按照总分从高到低存入文本文件

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

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

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

  7. &lbrack;项目记录&rsqb; 用c语言完成的一个学生成绩管理系统

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

  8. Day&lowbar;14【IO流】扩展案例1&lowbar;缓冲区字符输入、输出流,键盘录入,contains&lpar;&rpar;方法的统一运用

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

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

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

随机推荐

  1. telnet&colon; connect to address 127&period;0&period;0&period;1&colon; Connection refused

    telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...

  2. JVM-class文件完全解析-类索引,父类索引和索引集合

    类索引,父类索引和接口索引集合 前面介绍了class文件,从头开始的魔数,次版本号,主版本号,常量池入口,常量池,访问标志.那么再接下来的就是用来确定这个类的继承关系的类索引,父类索引和接口索引集合这 ...

  3. always NetWork Performance measure Tools

    1,iperf key feature:Measuring TCP and UDP BandWidth Performance Iperf features; *TCP .Measure bandwi ...

  4. Oracle&colon;递归查询(树形结构数据)

    今天要做一个查询功能:查询某用户所属部门,且包含该部门的所有上级部门信息.偶然找到了一个方法,特意来做个笔记.分享给和我一样的菜鸟,哈哈 查询子节点 1 select * 2 from d_arc_d ...

  5. UITextAlignmentCenter&&num;39&semi; is deprecated&colon; first deprecated in iOS 6&period;0

  6. 缓存,spring

    applicationcontext.xml xmlns:cache="http://www.springframework.org/schema/cache" xsi:schem ...

  7. 程序员50题(JS版本)(六)

    程序26:给一个不多于5位的正整数.要求:一.求它是几位数,二.逆序打印出各位数字. var test=456; var arr=[]; arr[0]=test%10; arr[1]=parseInt ...

  8. day 变量的赋值原理 变量的命名规则

    print(3*4*5*6/2) #简单的计算输出 x=3 y=4 print("x乘以y=",x*y) #运行5分钟 = 12 print(x*y) #在运行5分钟 = 12 ' ...

  9. delphi代码实现窗口最小化,最大化,关闭消息发送

      分类: 代码实现窗口最小化,最大化,关闭 var hwnd: hwnd;//句柄 PostMessage(hwnd,WM_SYSCOMMAND, SC_MINIMIZE,0); //最小化Post ...

  10. BZOJ 1212 L语言&lpar;DP&plus;字典树&rpar;

    求能被理解的最长前缀. 很显然的dp.令dp[i]=true,表示前缀i能理解.否则不能理解.那么dp[i+len]=dp[i]=true,当s[len]能匹配str[i,i+len]. 由于模式串长 ...