黑马程序员技术交流社区

标题: 为什么会是这样呢 [打印本页]

作者: 曹冬明    时间: 2014-4-14 01:04
标题: 为什么会是这样呢

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

class Student implements Comparable<Student>
{
        private String name;
        private int ma,cn,en;
        private int sum;

        Student(String name, int ma, int cn, int en)
        {
                this.name = name;
                this.ma = ma;
                this.cn = cn;
                this.en = en;
                sum = ma+cn+en;
        }
        public String getName()
        {
                return this.name;
        }
        public int getSum()
        {
                return sum;
        }
        public int hashCode()
        {
                return this.name.hashCode()+sum*78;
        }
        public boolean equals(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new ClassCastException("类型不匹配");

                Student s = (Student)obj;

                return this.name.equals(s) && 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 toString()
        {
                return "student["+name+","+ma+","+cn+","+en+"]";
        }
}

class StuInfoTool
{
        public static Set<Student> getStudents()throws IOException
        {
                BufferedReader bufr =
                        new BufferedReader(new InputStreamReader(System.in));

                Set<Student> s = new TreeSet<Student>();

                String line = null;

                while((line=bufr.readLine())!=null)
                {
                        if("over".equals(line))
                                break;
                        String[] str = line.split(",");

                        Student stu = new Student(str[0],new Integer(str[1]),new Integer(str[2]),new Integer(str[3]));

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

        public static void write2File(Set<Student> s)throws IOException
        {
                BufferedWriter bufw = new BufferedWriter(new FileWriter("stutest.txt"));

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

class StuInfoTest
{
        public static void main(String[] args) throws IOException
        {
                Set<Student> s = StuInfoTool.getStudents();
                StuInfoTool.write2File(s);
        }
}
为什么结果是这样的,第一个和最后一个,怎么没有对齐呢,试了几次都是这样
student[lisi,32,34,56]        122
student[zhangsan,33,44,55]        132
student[zhouqi,34,56,78]        168
student[wangwu,35,67,86]        188
student[zhaoliu,32,67,89]        188
student[sunba,45,67,89]        201

作者: 曹冬明    时间: 2014-4-14 01:06
怎么复制成这样了,晕死,只有第一个和最后一个没有对齐,其他的都对齐了
作者: 米大米    时间: 2014-4-14 02:07
首先应该把程序的要求说一下吧  而且也没注释 我是真心看的迷糊
作者: 曹冬明    时间: 2014-4-14 09:16
米大米 发表于 2014-4-14 02:07
首先应该把程序的要求说一下吧  而且也没注释 我是真心看的迷糊

代码虽然多,还是挺简单的啊,上面是一个对人的描述,下面是一个工具类,里面有两个方法,第一是返回一个集合,初始化人对象然后一一存入集合,然后返回!第二个方法是接受一个集合类型的参数,将集合中元素写入文件。我的问题就是我明明在写入的时候加了制表符,为什么没有对齐,如此而已!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2