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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈少文 中级黑马   /  2012-6-10 00:01  /  1431 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

已知表如下

姓名  年龄   得分
陈一,    27 ,   79.0
陈二,    23 ,   74.0
陈三,    26 ,   88.0
陈四,    28 ,   85.0
陈三,    26 ,   88.0
求跟据得分,进行排序
也就是要得到
陈二, 23, 74.0
陈一,    27 ,   79.0
陈四,    28 ,   85.0
陈三,    26 ,   88.0
陈三,    26 ,   88.0

这是自己写的代码


class Test
{
        private String name;
        private int age;
        private double score;

        Test(String name,int age,double score)
        {
                this.name = name;
                this.age = age;
                this.score = score;
               
        }
       
        public  String getName()
        {
                      return name;
        }


        public int getAge()
        {
                       
                return age;
        }


        public  double getScore()
        {
               
                return score;
               
        }
       
        //排序
        public static void order(double [] arr)
        {
                for(int x =0;x<arr.length-1;x++)
                {
                        for(int y = x+1;y<arr.length;y++)
                        {
                                if(arr[x]>arr[y])
                                {
                                //定义一个第三方变量换位
                                double temp = arr[x];
                                arr[x] =arr[y];
                                arr[y]=temp;
                                }
                        }
                }
        }
}

class Var
{
        public static void main(String[] args)

        {
        //创建5个对象
        Test s1 = new Test("陈一",27,75);
        Test s2 = new Test("陈二",28,88);
        Test s3 = new Test("陈三",26,84);
        Test s4 = new Test("陈四",25,91);
        Test s5 = new Test("陈五",23,79);
       
       
        //把分数,放入一个数组
        double[] arr = {s1.getScore(),s2.getScore(),s3.getScore(),s4.getScore(),s5.getScore()};
       
                //将分数进行排序
                s1.order(arr);
                //用编历方法打印
                for(int a = 0;a<arr.length;a++)
                {
                                               
                        if(arr[a]== s1.getScore())
                        System.out.println(s1.getName()+","+s1.getAge()+","+s1.getScore());
                       
                        else if(arr[a]==s2.getScore())
                        System.out.println(s2.getName()+","+s2.getAge()+","+s2.getScore());

                        else if(arr[a]==s3.getScore())
                        System.out.println(s3.getName()+","+s3.getAge()+","+s3.getScore());

                        else if(arr[a]==s4.getScore())
                        System.out.println(s4.getName()+","+s4.getAge()+","+s4.getScore());

                        else if(arr[a]==s5.getScore())
                        System.out.println(s5.getName()+","+s5.getAge()+","+s5.getScore());
                               
                }
       
        }
}


代码感觉写的很傻,请问一下兄弟们有没有其它思路。如果我有一批这样的数据那如何进行排序

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 鼓励下,这个方法多了,用集合是最简单的~~.

查看全部评分

1 个回复

倒序浏览
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Comparator;

  4. public class Main{
  5.         public static void main(String[] args) {
  6.                 ArrayList<Stu> list = new ArrayList<Stu>();
  7.                 list.add(new Stu("陈一",27,79.0));
  8.                 list.add(new Stu("陈二",23,74.0));
  9.                 list.add(new Stu("陈三",26,88.0));
  10.                 list.add(new Stu("陈四",28,85.0));
  11.                 list.add(new Stu("陈三",26,88.0));
  12.                 Stu[] arr = new Stu[list.size()];
  13.                 list.toArray(arr);
  14.                 Arrays.sort(arr, new Comparator<Stu>(){
  15.                         @Override
  16.                         public int compare(Stu o1, Stu o2) {
  17.                                 if(o1.getScore()<o2.getScore()){
  18.                                         return -1;
  19.                                 }else if(o1.getScore()==o2.getScore()){
  20.                                         return 0;
  21.                                 }else{
  22.                                         return 1;
  23.                                 }
  24.                         }
  25.                        
  26.                 });
  27.                 for(Stu s:arr){
  28.                         System.out.println(s);
  29.                 }
  30.                
  31.         }
  32.        
  33. }
  34. class Stu{
  35.         private String name;
  36.         private int age;
  37.         private double score;
  38.         public Stu(String name,int age,double score){
  39.                 this.name = name;
  40.                 this.age = age;
  41.                 this.score = score;
  42.         }
  43.         public String getName() {
  44.                 return name;
  45.         }
  46.         public void setName(String name) {
  47.                 this.name = name;
  48.         }
  49.         public int getAge() {
  50.                 return age;
  51.         }
  52.         public void setAge(int age) {
  53.                 this.age = age;
  54.         }
  55.         public double getScore() {
  56.                 return score;
  57.         }
  58.         public void setScore(double score) {
  59.                 this.score = score;
  60.         }
  61.         @Override
  62.         public String toString() {
  63.                 return name+":"+age+","+score;
  64.         }
  65. }
复制代码

评分

参与人数 1黑马币 +20 收起 理由
黄奕豪 + 20 如果有说明就是分了,哥,别那么懒~~~.

查看全部评分

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