A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毕业生 中级黑马   /  2014-8-22 22:31  /  1965 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.it.heima;
import java.io.*;
import java.util.*;

public class Test1{
        /**题目:1、 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
         * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
         * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
         * @param args
         * 分析:
         * 1)键盘输入学生信息,以quit作为结束标记,并将信息取出封装成Student对象
         * 2)学生为对象,用集合存储,需要排序,用TreeSet
         * 3)把集合数据写到文件中
         */                       
public static void main(String[] args) throws IOException {
         
    BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));   
    BufferedWriter bufw=new BufferedWriter(new FileWriter("stu.txt"));  
    TreeSet<Student> ts=new TreeSet<Student>();  
    String line=null;  
    System.out.println("请输入学生信息,格式如name,30,30,30(输入quit结束输入):");  
    //将从键盘接收到学生信息放到一个TreeSet集合中   
    while((line=bufr.readLine())!=null){  
        if("quit".equalsIgnoreCase(line))  
            break;
        //通过","分割
        String[] strs=line.split(",");  
        if(strs.length!=4){  
            System.out.println("输入格式不对,请重新输入");  
            continue;  
        }  
        ts.add(fillStu(strs));  
    }  
    bufr.close();  
    //将TreeSet写入到stu.txt文件中   
    Iterator<Student> it=ts.iterator();  
    while(it.hasNext()){  
        Student stu=it.next();  
        bufw.write(stu.toString());  
        bufw.newLine();  
    }  
    bufw.flush();   
    bufw.close();  
}  
//根据一个字符串数组信息填充生成Student对象   
public static Student fillStu(String[] strs){  
    Student stu=new Student(strs[0],Float.parseFloat(strs[1]),Float.parseFloat(strs[2]),Float.parseFloat(strs[3]));  
    return stu;  
}  
}  
//定义Student类,实现带泛型的Comparable接口,让Student对象自身具备比较性   
class Student implements Comparable<Student>{  
  
    private String name;  
    private float yuWen;  
    private float shuXue;  
    private float yingYu;  
    private float sum;  
    public Student(String name, float yuWen, float shuXue, float yingYu) {  
        super();  
        this.name = name;  
        this.yuWen = yuWen;  
        this.shuXue = shuXue;  
        this.yingYu = yingYu;  
        this.sum=yuWen+shuXue+yingYu;  
    }  
    @Override  
    //复写compareTo()方法,实现Student对象按总分比较,总分一致时按姓名比较   
    public int compareTo(Student o) {  
        float result=this.sum-o.sum;  
        if(result>0)  
            return -1;  
        else if(result==0){  
            return this.name.compareTo(o.name);  
        }  
        return 1;  
    }  
    //stu.txt文件的格式要比较直观,所以复写toString方法
    public String toString(){  
        return name+"\t 语文成绩:"+yuWen+"\t 数学成绩:"+shuXue+"\t 英语成绩:"+yingYu+"\t总分:"+sum;  
    }  
}

评分

参与人数 1黑马币 +5 收起 理由
lemon_tree + 5 山寨

查看全部评分

5 个回复

倒序浏览
小手一抖 金币拿走
回复 使用道具 举报
这个在毕老师视频上见过
回复 使用道具 举报
很好,挺不错的。
回复 使用道具 举报
我为你着迷 来自手机 金牌黑马 2014-8-29 11:37:46
报纸
视频里有!
回复 使用道具 举报
不错,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马