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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王峰230321 于 2013-7-27 12:42 编辑

我基本是按老师讲的 那么写.  应该也不差什么.  功能都实现了.   可是 在最后往文件写的时候 .  为什么不是我的toString方法,  写出来之后 是一个对象的地址值? .    这是为什么呢.? 我找到问题了- -  对不起了.  正在 实验的同学. .   我手欠在toString里放了一个参数.. . 空参数 就好了还是这个编码  ..  服了- - .  为什么 打印的时候 不换行..   或者说.  为什么  不是接着写. ?  而是 覆盖着写.  写完一个学生.  在写第二个学生的时候 就把第一个给覆盖了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.io.*;
import java.util.*;
class Caifen
{
        public static void main(String[] args)throws Exception
        {
                Set<Student> su=StudentInfoTool.getstudents();
                StudentInfoTool.Filestu(su);
        }
}
class Student implements Comparable<Student>
{
        private static String name;
        private static int su,yu,ying,sum;
        Student(String name,int su,int yu,int ying)
        {
                this.name=name;
                this.su=su;
                this.yu=yu;
                this.ying=ying;
                sum=su+yu+ying;
        }
        public String getName()
        {
                return name;
        }
        public int getSum()
        {
                return 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;
        }
        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 toStri()
        {
                return name+" "+su+" "+yu+" "+ying;
        }
}
class StudentInfoTool<T>
{
        public static Set<Student> getstudents()throws Exception
        {
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                Set<Student> sset =new TreeSet<Student>();
                String line=null;
                while((line=br.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]));
                    sset.add(stu);
                }
                br.close();
                return sset;
                }
        public static void Filestu(Set<Student> ssut)throws Exception
        {
                BufferedWriter bw=new BufferedWriter(new FileWriter("sut.txt"));
                for(Student stu:ssut)
                {
                        bw.write(stu.toStri()+"\t");
                        bw.write(stu.getSum()+"\r\n"+"我是好人");
                        bw.newLine();
                        bw.flush();
                }
                bw.close();
        }
       
}



3 个回复

倒序浏览
   if(obj instanceof Student)
                        throw new ClassCastException("类型不匹配");
因为加个非吧
回复 使用道具 举报
草貌路飞 发表于 2013-7-27 13:32
if(obj instanceof Student)
                        throw new ClassCastException("类型不匹配");
因 ...

我靠 你丫的 分怎么涨的那么快.  ..  .   .  那个地方 却是是写错了.  可不是关键.   因为 编码 根本都没用过equals .. 我试了大概两个小时..   发现了原因.  在创建学生的时候.  把sum 单独作为一个参数. . pricate int sum;    就行了.  
回复 使用道具 举报
王峰230321 发表于 2013-7-27 14:33
我靠 你丫的 分怎么涨的那么快.  ..  .   .  那个地方 却是是写错了.  可不是关键.   因为 编码 根本都没 ...

活动..:#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马