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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋超2356 中级黑马   /  2014-4-15 21:57  /  780 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋超2356 于 2014-4-16 00:04 编辑
  1. import java.io.*;
  2. import java.util.*;

  3. public class TestIo {
  4.         public static void main(String[]args) throws Exception {
  5.                 Set<Student> stus = StudentInfoTool.getStudents();
  6.                 StudentInfoTool.write2File(stus);
  7.         }
  8. }

  9. public class Student implements Comparable<Student>
  10. {        
  11.         private String name ;
  12.         private        int cn;
  13.         private int ma;
  14.         private int en;
  15.         private int sum;
  16.         Student(String name ,int cn,int ma,int en) {
  17.                 this.name = name;
  18.                 this.cn = cn;
  19.                 this.ma = ma;
  20.                 this.en = en;
  21.                 this.sum = cn+ma+en;
  22.         }

  23.         public String toString() {
  24.                 return "Student["+name+","+cn+","+ma+","+en+"]";
  25.         }

  26.         public int hashCode() {
  27.                 return name.hashCode()+sum*78;
  28.         }

  29.         public int compareTo(Stident s) {
  30.                 int num = new Integer(this.sum).compareTo(new Integer(s.sum));
  31.                 if(num == 0)
  32.                         return this.name.compareTo(s.name);
  33.                 return num;
  34.         }

  35.         public String getName() {
  36.                 return this.name;
  37.         }

  38.         public int getSum() {
  39.                 return this.sum;
  40.         }

  41.         public boolean equals (Object obj) {
  42.                 if(!(obj instanceof Student))
  43.                         throw new ClassCastException("类型不匹配");
  44.                 Student s = (Student) obj;

  45.                 return this.name.equals(s.name) && this.sum == s.sum;
  46.         }
  47. }

  48. class StudentInfoTool {
  49.         public static Set<Student> getStudents() throws Exception {
  50.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  51.                 String line = null;

  52.                 Set<Student>  stus = new Set<Student>();
  53.                 while((line = bufr.readLine()) != null) {
  54.                         if("over".equals(line))
  55.                                 break;

  56.                         String[] info = line.split(",");
  57.                         Student stu = new Student(info[0],Integer.parseInt(info[1]),
  58.                                 Integer.parseInt(info[2]),Integer.parseInt(info[3]));

  59.                         stus.add(stu);
  60.                 }
  61.                 bufr.close();
  62.                 return stus;
  63.         }

  64.         public static write2File(Set<Student> stus)  throws Exception {
  65.                 BufferedWriter bufw = new BufferedWriter(new FileWriter("stuinfo.txt"));

  66.                 for(Student stu : stus) {
  67.                         bufw.write(stu.toString()+"\t");
  68.                         bufw.write(stu.getSum());
  69.                         bufw.newLine();
  70.                         bufw.flush();
  71.                 }
  72.                 bufw.close();
  73.         }
  74. }
复制代码
看完毕老师的IO,最后的练习题自己写了有异常,哪里出错了呢??

4 个回复

倒序浏览
哦哦,我知道了不能抛,Exception,需要抛出具体的IOException...
回复 使用道具 举报

import java.io.*;
import java.util.*;

public class TestIo {
        public static void main(String[]args) throws Exception {
                Set<Student> stus = StudentInfoTool.getStudents();
                StudentInfoTool.write2File(stus);
        }
}

class Student implements Comparable<Student>
{        
        private String name ;
        private        int cn;
        private int ma;
        private int en;
        private int sum;
        Student(String name ,int cn,int ma,int en) {
                this.name = name;
                this.cn = cn;
                this.ma = ma;
                this.en = en;
                this.sum = cn+ma+en;
        }

        public String toString() {
                return "Student["+name+","+cn+","+ma+","+en+"]";
        }

        public int hashCode() {
                return name.hashCode()+sum*78;
        }

        public int compareTo(Student s) {
                int num = new Integer(this.sum).compareTo(new Integer(s.sum));
                if(num == 0)
                        return this.name.compareTo(s.name);
                return num;
        }

        public String getName() {
                return this.name;
        }

        public int getSum() {
                return this.sum;
        }

        public boolean equals (Object obj) {
                if(!(obj instanceof Student))
                        throw new ClassCastException("类型不匹配");
                Student s = (Student) obj;

                return this.name.equals(s.name) && this.sum == s.sum;
        }
}

class StudentInfoTool {
        public static Set<Student> getStudents() throws Exception {
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                String line = null;

                Set<Student>  stus = new HashSet<Student>();
                while((line = bufr.readLine()) != null) {
                        if("over".equals(line))
                                break;

                        String[] info = line.split(",");
                        Student stu = new Student(info[0],Integer.parseInt(info[1]),
                                Integer.parseInt(info[2]),Integer.parseInt(info[3]));

                        stus.add(stu);
                }
                bufr.close();
                return stus;
        }

        public static void write2File(Set<Student> stus)  throws Exception {
                BufferedWriter bufw = new BufferedWriter(new FileWriter("stuinfo.txt"));

                for(Student stu : stus) {
                        bufw.write(stu.toString()+"\t");
                        bufw.write(stu.getSum());
                        bufw.newLine();
                        bufw.flush();
                }
                bufw.close();
        }
}

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
坏米饭 发表于 2014-4-15 22:16
import java.io.*;
import java.util.*;

我粘到Myeclipse上,很多报错,你要是没用Myeclipse,敲的时候注意点。 Student有一个地方敲错了。有的方法没写返回值类型。getStudents()里有一步应该是Set<Student>  stus = new HashSet<Student>();你写的是Set<Student>  stus = new Set<Student>();
回复 使用道具 举报
63行,Set是一个接口,不能创建对象,改成Set<Student> stus = new TreeSet<Student>();就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马