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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫江龙 黑马帝   /  2011-12-17 22:51  /  2176 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闫江龙 于 2011-12-18 07:54 编辑

public static void main(String[] args)
        {
               
                Student[] arr=new Student[5];
                arr[0]=new Student("圣斗士",22,80);
                arr[1]=new Student("葫芦娃",20,85);
                arr[2]=new Student("孙悟空",24,91);
                arr[3]=new Student("皮卡丘",8,73);
                arr[4]=new Student("八神",30,62);
                sorb(arr);
                for(int i=0;i<arr.length;i++)
                System.out.println(arr.name+" "+arr.age+" "+arr.score);
        }
        public static void sorb(Student[] arr)
        {
                Student temp=null;
                for(int i=0;i<arr.length-1;i++)
                {
                        for(int j=i+1;j<arr.length;j++)
                        {
                                if(arr.getscore()<arr[j].getscore())

                                temp=arr;
       
                                arr=arr[j];

                                arr[j]=temp;
       
                        }
       
                }
       
        }
我的运行结果是这样  到底哪不对呢?????
八神 30 62.0
葫芦娃 20 85.0
圣斗士 22 80.0
圣斗士 22 80.0
圣斗士 22 80.0

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

6 个回复

倒序浏览
楼主这个方法你 换ComparaTo()方法吧 。。。

这上面这是调换的是值  而不是地址 你要把地址调换了 就可以了  
回复 使用道具 举报
像这种有映射关系的要用Map集合,
不应该放在一个student数组中,楼主可改成TreeMap在试试
回复 使用道具 举报
这里有个实例

import java.util.*;

class Student implements Comparable<Object> {
          
    public Student(String name,int age,int score)
    {
        this.name=name;
        this.age=age;
        this.score=score;
    }

private String name;
public String Getname()
{
return name;
}
public void Setname(String name)
{
this.name=name;
}

private int age;
public int Getage()
{
return age;
}
public void Setage(int age)
{
this.age=age;
}

private int score;
public int getScore()
{
return score;
}
public void SetScore(int score)
{
    this.score=score;
}

public int compareTo(Object o)
{
        Student s=((Student)o);
       
        return score>s.getScore()? 1:(score==s.getScore()? 0:-1);
       
}



}      



public class Sortbyscore {

        /**
         * @param argS
         */

       
       
        public static void main(String[] argS) {
                // tODO Auto-generated method Stub
                Student[] stu=new Student[]{
                                new Student("张三",20,90),
                                new Student("李四",21,95),
                                new Student("王五",12,80),
                                new Student("刘备",23,94),
                                new Student("赵东",34,88)
                        };
                        System.out.println("before sorting: ");
                        for(int i=0;i<stu.length;i++)
                        {
                                System.out.println("   "+stu[i].Getname()+"   "+stu[i].Getage()+"   "+stu[i].getScore());
                        }
                       
                        Arrays.sort(stu);
                       
                        System.out.println("after sorting: ");
                        for(int i=0;i<stu.length;i++)
                        {
                                System.out.println("   "+stu[i].Getname()+"   "+stu[i].Getage()+"   "+stu[i].getScore());
                        }
               
        }
       


        }
       

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
我不知道怎么说了 错误找出来了 if 下面少了{}  加上后 运行成功了
回复 使用道具 举报
闫江龙 发表于 2011-12-18 07:35
我不知道怎么说了 错误找出来了 if 下面少了{}  加上后 运行成功了

语法分析的时候遇到“;”,就结束了
比如:if(;;){}其中大括号目的就是要求编译器继续分析,不然会有很多莫名其妙的的错误,当然有可能
会继续编译
回复 使用道具 举报
杨玉揆 黑马帝 2011-12-18 10:50:11
7#
panjone 发表于 2011-12-17 23:07
这里有个实例

import java.util.*;

干嘛不用泛型呢??? 这样的话可减少很多类型间的强转
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马