黑马程序员技术交流社区

标题: 帮忙看这个基础测试6题哪不对啊? [打印本页]

作者: 闫江龙    时间: 2011-12-17 22:51
标题: 帮忙看这个基础测试6题哪不对啊?
本帖最后由 闫江龙 于 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
作者: panjone    时间: 2011-12-17 23:02
楼主这个方法你 换ComparaTo()方法吧 。。。

这上面这是调换的是值  而不是地址 你要把地址调换了 就可以了  
作者: 张冬冬    时间: 2011-12-17 23:06
像这种有映射关系的要用Map集合,
不应该放在一个student数组中,楼主可改成TreeMap在试试
作者: panjone    时间: 2011-12-17 23:07
这里有个实例

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());
                        }
               
        }
       


        }
       


作者: 闫江龙    时间: 2011-12-18 07:35
我不知道怎么说了 错误找出来了 if 下面少了{}  加上后 运行成功了
作者: 郝锡强    时间: 2011-12-18 10:31
闫江龙 发表于 2011-12-18 07:35
我不知道怎么说了 错误找出来了 if 下面少了{}  加上后 运行成功了

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

import java.util.*;

干嘛不用泛型呢??? 这样的话可减少很多类型间的强转




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