黑马程序员技术交流社区

标题: 如何编写在原有学生类中添加性别和成绩成员变量,按成绩 [打印本页]

作者: 颜宗茂    时间: 2011-12-13 16:01
标题: 如何编写在原有学生类中添加性别和成绩成员变量,按成绩
本帖最后由 颜宗茂 于 2011-12-25 15:33 编辑

import java.util.*;
class TreeSetTest
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11));
                ts.add(new Student("lisi01",13));
                ts.add(new Student("lisi03",24));
                ts.add(new Student("lisi04",27));
                ts.add(new Student("lisi05",11));
       
                Iterator it =ts.iterator();
                while(it.hasNext())
                {
                        Student stu = (Student)it.next();
                        System.out.println(stu.getName()+"..."+stu.getAge());
                }
        }
}

class Student implements Comparable
{
        private String name;
        private int age;
       
        Student(String name,int age)
        {
                this.name = name;
                this.age = age;
                        }
        public int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生类");
                Student s = (Student)obj;
                if(this.age>s.age)
                        return 1;
                if(s.age==this.age)
                {
                        return this.name.compareTo(s.name);       
                }
                return -1;

               
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
}



以上程序是在定义的学生类中含有两个成员变量,再创建5个对象按年龄进行排序。
如果在学生类当中,再多加定义两个成员变量性别和考试成绩。也是创建5个对象,按成绩排序。应该如何编写这个程序??
作者: 李振元    时间: 2011-12-13 16:20
本帖最后由 李振元 于 2011-12-13 16:22 编辑

我在记事本里编写了一下,希望对楼主有所帮助:

import java.util.*;
class TreeSetTest
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11,"男",99));
                ts.add(new Student("lisi01",13,"女",94));
                ts.add(new Student("lisi03",24,"男",95));
                ts.add(new Student("lisi04",27,"女",98));
                ts.add(new Student("lisi05",11,"男",97));
      
                Iterator it =ts.iterator();
                while(it.hasNext())
                {
                        Student stu = (Student)it.next();
                       System.out.println(stu.getName()+"..."+stu.getAge()
                          +"..."+stu.getSex()+"..."+"..."+stu.getGrade());
                }
        }
}

class Student implements Comparable
{
        private String name;
        private int age;
        private String sex;
        private int grade;
        Student(String name,int age,String sex,int grade)
        {
                this.name = name;
                this.age = age;
                this.sex = sex;
                this.grade = grade;
                        }
        public int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生类");
                Student s = (Student)obj;
                if(this.grade>s.grade)
                        return 1;
                if(s.grade==this.grade)
                {
                        return this.name.compareTo(s.name);      
                }
                return -1;

               
        }
        
        //都只提供get()方法,楼主可以自己增加set()方法
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
         public String getSex()
        {
                return sex;
        }
         public int getGrade()
        {
                return grade;
        }
      
}
作者: 常文艺    时间: 2011-12-13 16:20
compare 方法 里  对比 你要排序的属性就行了
作者: 颜宗茂    时间: 2011-12-19 16:40
明白了,谢谢
作者: 刘基军    时间: 2011-12-19 19:22
LZ改结贴了,
结贴方法:
http://bbs.itheima.com/thread-4863-1-1.html




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