美文网首页Java
Java 21-3 IO技术练习1

Java 21-3 IO技术练习1

作者: 第二套广播体操 | 来源:发表于2019-01-29 14:33 被阅读0次

    为了最大的效率,请考虑在BufferedReader中包装一个InputStreamReader。 例如:

    BufferedReader in
    = new BufferedReader(new InputStreamReader(System.in));


    键盘输入学生姓名 年龄 语文成绩 数学成绩 英语成绩 将总成绩按升序排列 并存储到文本中
    * 1.获取信息
    * 2.计算成绩 并将信息存储到集合中
    * 3.将集合中的每个人的成绩升序排列
    * 4.通过输出流传入文本中

    public class Test {
        public static void main(String[] args) throws IOException {
    
            File file=new File("D:\\Text2.txt");
            Set set=GetInfoTool.getStudents();
            GetInfoTool.write2File(set,file);
        }
    }
    
    public class GetInfoTool {
    //    将键盘输入的信息存储到集合中
        public static Set<Student> getStudents() throws IOException {
    //        键盘输入
            BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
            Set<Student> set=new TreeSet<>(Collections.reverseOrder());
    //        相反的比较器
    //获取键盘信息
            String line=null;
            while( (line=in.readLine())!=null) {
                if (line.equals("over"))
                  break;
    //            如果输入over循环终止
                String[]  strings=line.split(",");
              Student stu= new Student(strings[0],Integer.parseInt(strings[1])
                        ,Integer.parseInt(strings[2]),Integer.parseInt(strings[3]));
              set.add(stu);
            }
            return set;
        }
    //    将集合中信息储存到文本中
        public static void write2File(Set<Student> set, File file){
            BufferedWriter bw=null;
    
            try {
                bw=new BufferedWriter(new FileWriter(file));
    //            过滤器导入
    //            将set集合中的每一个学生信息写入到文件中
                for (Student stu:set){
                    bw.write(stu.getName()+"\t"+stu.getSum());
                    bw.newLine();
                bw.flush();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                   if (bw!=null) {
                       try {
                           bw.close();
                       } catch (IOException e) {
                           e.printStackTrace();
                       }
                   }
            }
    
    
        }
    
    }
    
    public class Student implements Comparable<Student>{
        private String name;
        private int ma,cn,en;
        private int sum;
    
        public Student() {
        }
    
        public Student(String name, int ma, int cn, int en) {
            this.name = name;
            this.ma = ma;
            this.cn = cn;
            this.en = en;
            this.sum=ma+cn+en;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getMa() {
            return ma;
        }
    
        public void setMa(int ma) {
            this.ma = ma;
        }
    
        public int getCn() {
            return cn;
        }
    
        public void setCn(int cn) {
            this.cn = cn;
        }
    
        public int getEn() {
            return en;
        }
    
        public void setEn(int en) {
            this.en = en;
        }
    
        public int getSum() {
            return sum;
        }
    
        public void setSum(int sum) {
            this.sum = sum;
        }
    //存入set 的每个元素都必须是唯一的,必须定义equals()方法以确保唯一性
    
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Student)) return false;
            Student student = (Student) o;
            return ma == student.ma &&
                    cn == student.cn &&
                    en == student.en &&
                    sum == student.sum &&
                    Objects.equals(name, student.name);
        }
    
    //TreeSet方法复写
        @Override
        public int compareTo(Student o) {
            int temp=this.sum-o.sum;
            return temp==0? this.name.compareTo(o.name):temp;
        }
    }
    

    相关文章

      网友评论

        本文标题:Java 21-3 IO技术练习1

        本文链接:https://www.haomeiwen.com/subject/rcjxsqtx.html