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

© 胥亚辉 黑马帝   /  2012-1-13 13:42  /  2703 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我怎么给学生按分数高低排序啊。代码应该怎么加。我真的迷糊了。

class  Student
{
        private String name;
        private int age;
        private int  list;
       
        Student(String name,int age,int  list)
        {
                this.name = name;
                this.age = age;
                this.list = list;

                getinfo();
        }
        public void getinfo()
        {
                System.out.println("name="+name+"   age="+age+"    list="+list);
               
        }

}
class Studentinfo
{
        public static void main(String[] args)
        {
                Student s1 = new Student("xiaohua",23,66);
                Student s2 = new Student("xiaojun",20,85);
                Student s3 = new Student("xiaoli",20,35);
                Student s4 = new Student("xiaoming",20,78);
                Student s5 = new Student("xiaolan",20,100);

        }
}

7 个回复

倒序浏览
代码仅供参考,关键是理解排序的过程,建议你把学生对象存放到数组中,这样操作起来比较方便:
Student[] stu = new Student[5];//创建数组对象
        stu[0] = new Student("张三", 19, 88);
        stu[1] = new Student("李四", 21, 79);
        stu[2] = new Student("王五", 28, 90);
        stu[3] = new Student("张六", 17, 91);
        stu[4] = new Student("陈七", 23, 99);
for (int i = 1; i < stu.length; i++) {//采用冒泡法排序,外层循环表示总循环趟数
            for (int j = 0; j < stu.length - i; j++) {//内层循环表示每趟循环次数
                if (stu[j].getScore() > stu[j + 1].getScore()) {
                    Student s = null;
                    s = stu[j];
                    stu[j] = stu[j + 1];
                    stu[j + 1] = s;
                }
            }
   

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
元素Student实现Comparable接口,重写compareTo()方法,存储于TreeSet集合

  1. import java.util.TreeSet;
  2. import java.util.Iterator;
  3. import java.util.Comparator;


  4. class Student implements Comparable
  5. {
  6.   private String name;
  7.   private int age;
  8.   private int list;
  9.   Student(String name, int age, int list)
  10.   {
  11.           this.name=name;
  12.           this.age=age;
  13.           this.list=list;               
  14.   }  
  15.   public void getinfo()
  16.   {
  17.     System.out.println("name="+name+"   age="+age+"    list="+list);
  18.   }
  19.    
  20.   public int compareTo(Object obj)
  21.   {
  22.                   if(!(obj instanceof Student))
  23.                           throw new RuntimeException("不是学生对象");
  24.                   Student o = (Student)obj;
  25.                   if(this.list==o.list)
  26.                           return this.name.compareTo(o.name);
  27.                   else if(this.list>o.list)
  28.                           return 1;
  29.                   else
  30.                           return -1;
  31.   }
  32.   public String toString()
  33.   {
  34.                   return this.name+"-"+this.age+"-"+this.list;       
  35.   }
  36. }

  37. class Test
  38. {
  39.         public static void main(String[] args)
  40.         {
  41.                 TreeSet<Student> ts = new TreeSet<Student>();
  42.                
  43.                 Student s1 = new Student("xiaohua",23,66);
  44.     Student s2 = new Student("xiaojun",20,85);
  45.     Student s3 = new Student("xiaoli",20,35);
  46.     Student s4 = new Student("xiaoming",20,78);
  47.     Student s5 = new Student("xiaolan",20,100);

  48.                 ts.add(s1);
  49.                 ts.add(s2);
  50.                 ts.add(s3);
  51.                 ts.add(s4);
  52.                 ts.add(s5);
  53.                
  54.                 Iterator<Student>it = ts.iterator();
  55.                 while(it.hasNext())
  56.                 {
  57.                         System.out.println(it.next());       
  58.                 }
  59.         }
  60. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
zl918 黑马帝 2012-1-14 10:34:10
板凳
  1. // 利用快速排序,根据学生成绩大小顺序排序
  2.         public static Student[] sortedStu(Student[] stus, int low, int high) {

  3.                 Student s = stus[low];
  4.                 int i = low;
  5.                 int j = high;
  6.                 while (i < j) {

  7.                         // j向前遍历,查找大于s的值
  8.                         while (i < j && (stus[j].getScore() <= s.getScore())) {
  9.                                 j--;
  10.                         }
  11.                         if (i < j) {
  12.                                 stus[i++] = stus[j];
  13.                         }

  14.                         // i向后遍历,查找小于s的值
  15.                         while (i < j && (stus[i].getScore() >= s.getScore())) {
  16.                                 i++;
  17.                         }
  18.                         if (i < j) {
  19.                                 stus[j--] = stus[i];
  20.                         }
  21.                 }

  22.                 stus[i] = s;

  23.                 // 递归,对左子序列做划分
  24.                 if (low < i - 1) {
  25.                         sortedStu(stus, low, i - 1);
  26.                 }
  27.                 // 递归,对右子序列做划分
  28.                 if (high > i + 1) {
  29.                         sortedStu(stus, i + 1, high);
  30.                 }

  31.                 return stus;
  32.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
就是把数字取出来,进行排序,排序方法有很多。可以参见毕老师视频中的的冒泡和选择排序。
回复 使用道具 举报
直接丢TreeSet集合里面不就行了么
回复 使用道具 举报
沈样 黑马帝 2012-1-19 19:09:35
7#
你这个可以用comparator或者comparable时行排序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马