| 本帖最后由 马云 于 2012-3-23 17:05 编辑 
 /*
 有五个学生,每个学生有3门课的成绩
 从键盘输入以上数据(包括姓名,三门课成绩)
 输入的格式:如:zhangsan,30,40,60计算出总成绩,
 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。
 1)描述学生对象
 2)定义一个可操作学生对象的工具类
 思想:
 1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
 2。因为学生有很多,那么就需要存储,使用到集合,因为要对学生的总分排序。所以可以使用treeSet
 3,将集合的信息写入到一个文件中
 */
 
 Student.java
 IOexample.java复制代码package demo;
public class Student implements Comparable<Student>{
        String name;
        int chiaeseSco;
        int math;
        int english;
        public Student(String name,int chia,int math,int eng){
                this.name=name;
                this.chiaeseSco=chia;
                this.math=math;
                this.english=eng;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getChiaeseSco() {
                return chiaeseSco;
        }
        public void setChiaeseSco(int chiaeseSco) {
                this.chiaeseSco = chiaeseSco;
        }
        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 String toString() {
                
                return "name:"+name+"      chiaeseSco:"+chiaeseSco+"      math:"+math+"      english:"+english+"      sum"+this.scoSum();
        }
        public int scoSum(){
                return chiaeseSco+math+english;
        }
        public int compareTo(Student o) {
                
                int num=o.scoSum()-this.scoSum();
                if(num==0){
                        return this.getName().compareTo(o.getName());
                }
                return num;
        }
        
}
/*
有五个学生,每个学生有3门课的成绩
从键盘输入以上数据(包括姓名,三门课成绩)
输入的格式:如:zhangsan,30,40,60计算出总成绩,
并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。
1)描述学生对象
2)定义一个可操作学生对象的工具类
思想:
1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
2。因为学生有很多,那么就需要存储,使用到集合,因为要对学生的总分排序。所以可以使用treeSet
3,将集合的信息写入到一个文件中 
*/
那里不足的地方大家一块论论啊!复制代码package demo;
import java.io.*;
import java.util.TreeSet;
public class IOexample {
        public static void main(String[] args) {
                BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
                TreeSet<Student> stus=new TreeSet<Student>();
                String data=null;
                Student stu=null;
                try {
                        while((data=bfr.readLine())!=null){
                                if(!data.equals("")){
                                        if(data.equals("over")){
                                                //此入如果输入over将集合的数据写入到文件流
                                                ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("student.file"));
                                                for(Student s:stus){
                                                        oos.writeObject(s);
                                                }
                                        }else{
                                                stu=split(data);
                                                stus.add(stu);
                                                data=null;
                                        }
                                }else{
                                        break;
                                }
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
        
        //切割传入的字符串对象,返回一个Student对象
        static Student split(String str){
                String name = "";
                int chiaeseSco = 0;
                int math = 0;
                int english = 0;
                if(validata(str)==3){
                        
                        str=trimAll(str);
                        String[] tempStu=str.split(",");
                        //转换Student字符串对象
                        if(tempStu.length==4){
                                name=tempStu[0];
                                chiaeseSco=Integer.parseInt(tempStu[1]);
                                math=Integer.parseInt(tempStu[2]);
                                english=Integer.parseInt(tempStu[3]);
                                return new Student(name,chiaeseSco,math,english);
                        }else{
                                return null;
                        }
                        
                }
                return null;
        }
        
        //删除所有输入的空格(Ok没问题)
        static String trimAll(String str){
                char[] ch=str.toCharArray();
                StringBuilder sb=new StringBuilder();
                for(int i=0;i<str.length();i++){
                        if(ch[i]!=' '){
                                sb.append(ch[i]);
                        }
                }
                return sb.toString();
        }
        
        //校验格式(OK没有问题)
        static int validata(String str){
                char[] ch=str.toCharArray();
                int count=0;
                for(int i=0;i<str.length();i++){
                        if(ch[i]==','){//使用逗号split
                                count++;
                        }
                }
                return count;
}
}
 异常基本都没有处理,大家改的就在后边跟贴吧!!!
 |