本帖最后由 橘子果酱 于 2015-11-20 00:09 编辑
需求:
* 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
* 输入格式为:name,30,30,30(姓名,三门课成绩),
* 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
* 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
*
* 分析:
* 创建 学生类
* 成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩
* 成员方法:空参,有参,有参构造中传入姓名,语文成绩,数学成绩,英语成绩
* 创建键盘录入对象
* 输入格式为:name,30,30,30
* 创建TreeSet集合,传入比较器
* 如果录入的小于5就储存在集合中
* 将录入的字符串切割成字符串数组从逗号开始切割,后面的转换为int类型
* 将转换后的结果封装成对象添加到集合中
* 遍历集合
创建 学生类- package com.bean;
- <span style="background-color: rgb(255, 255, 255);">//创建 学生类</span>
- public class Student {
- private String name;
- private int chinese;
- private int math;
- private int english;
- private int sum;
-
- 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;
- this.sum = this.chinese + this.math + this.english;
- }
-
- public int getSum(){
- return sum;
- }
-
- public String toString(){
- return name+","+chinese+","+math+","+english+",总成绩:"+sum;
-
- }
-
-
- }
复制代码
- package com.heima;
- import java.io.BufferedWriter;
- import java.io.FileOutputStream;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Comparator;
- import java.util.Scanner;
- import java.util.TreeSet;
- import com.bean.Student;
- /*
- * 创建键盘录入对象
- * 输入格式为:name,30,30,30
- * 创建TreeSet集合,传入比较器
- * 如果录入的小于5就储存在集合中
- * 将录入的字符串切割成字符串数组从逗号开始切割,后面的转换为int类型
- * 将转换后的结果封装成对象添加到集合中
- * 遍历集合
- */
- public class Demo_ReaderStudent {
- public static void main(String[] args) throws IOException {
- getMassage();
- }
-
- public static void getMassage() throws IOException{
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入学生信息,输入格式为:name,30,30,30");
- TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>(){
- public int compare(Student s1, Student s2) {
- int num = s1.getSum() - s2.getSum();
- return num == 0? 1 :num;
- }
- });
- while(ts.size()<1){
- String line = sc.nextLine();
- String[] arr;
- int chinese;
- int math;
- int english;
- try {
- arr = line.split("\\,");
- chinese = Integer.parseInt(arr[1]);
- math = Integer.parseInt(arr[2]);
- english = Integer.parseInt(arr[3]);
- ts.add(new Student(arr[0],chinese,math,english));
- } catch (NumberFormatException e) {
- System.out.println("录入格式错误,请重新录入。。。。");
- }
- }
- BufferedWriter bw = new BufferedWriter(new FileWriter("stu.txt"));
- for(Student s : ts){
- bw.write(s.toString());
- bw.newLine();
- }
- bw.close();
- }
- }
复制代码
|
|