昨天学了对象的数组,及利用Arrays类对数组排序,但是编写程序如下,并在eclipse里编译,无任何错误。可是运行时,竟然输出内存地址。本人菜鸟一只,刚接触java没多久,希望各位大师指教一下。代码如下:package hello;import java.util.Arrays;
public class Student implements Comparable
{
 int num;
 String name;
 
 Student(int num,String name)
 {
  this.num=num;
  this.name=name;
 }
 
 public String ToString()
 {
  return  "number="+num+","+"name="+name;
 }
 
 public int compareTo(Object o)
 {
  Student s=(Student)o;
  return num>s.num ? 1 : (num==s.num ? 0 : -1);
 }
 
 public static void main(String args[])
 {
  Student[] ss=new Student[]{new Student(1,"zhangsan"),
                                   new Student (2,"lisi"),
                                   new Student(3,"wangwu")};
        Arrays.sort(ss);
        for(int m=0;m<ss.length;m++)
        {
          System.out.print(ss[m]);
        }
     }
}
输出结果为:[email protected]@a90653hello.Student@de6ced
请问哪位大虾可以赐教?在这里先谢过了!

解决方案 »

  1.   

    public String ToString() ----->public String toString()
      

  2.   

    在你的方法里加个这个public String toString()
    {
       return "num ="+num+" name ="+name;
    }
      

  3.   


    package hello;import java.util.Arrays; 
    public class Student implements Comparable 

    int num; 
    String name; Student(int num,String name) 

      this.num=num; 
      this.name=name; 
    } public String ToString() 

      return  "number="+num+","+"name="+name; 
    } public int compareTo(Object o) 

      Student s=(Student)o; 
      return num>s.num ? 1 : (num==s.num ? 0 : -1); 
    } public static void main(String args[]) 

      Student[] ss=new Student[]{new Student(1,"zhangsan"), 
                                      new Student (2,"lisi"), 
                                      new Student(3,"wangwu")}; 
            Arrays.sort(ss); 
            for(int m=0;m <ss.length;m++) 
            { 
              System.out.print(ss[m].ToString()); 
            } 
        } 

    你定义了ToString()怎么不用
      

  4.   

    toString方法名是系统内置方法名,每一个字母的大小写都不要更改,而ToString是自定义方法名。
      

  5.   

    public String toString()
    {
       return "num ="+num+" name ="+name;
    }
    toString 与ToString是不同
      

  6.   

    重写方法要去COPY.
    看马士兵的视频的时候,他老强调.
      

  7.   

    重写toString方法就OK,楼主的大小写没有注意吧,你写的是ToString方法,并没有覆盖toString方法package hello;import java.util.Arrays;
    public class Student implements Comparable
    {
    int num;
    String name;Student(int num,String name)
    {
      this.num=num;
      this.name=name;
    }public String toString()
    {
      return  "number="+num+","+"name="+name;
    }public int compareTo(Object o)
    {
      Student s=(Student)o;
      return num>s.num ? 1 : (num==s.num ? 0 : -1);
    }public static void main(String args[])
    {
      Student[] ss=new Student[]{new Student(1,"zhangsan"),
                                      new Student (2,"lisi"),
                                      new Student(3,"wangwu")};
            Arrays.sort(ss);
            for(int m=0;m <ss.length;m++)
            {
              System.out.print(ss[m]);
            }
        }
    }
      

  8.   

    不过我也有个问题,为什么要用到compareTo方法来排序?Arrays类里面的Arrays.sort()方法不就是用来根据元素的自然顺序对指定对象数组按升序进行排序的吗?package hello;import java.util.*;
    public class Student implements Comparable
    {
    int num;
    String name;Student(int num,String name)
    {
      this.num=num;
      this.name=name;
    }public String toString()
    {
      return  "number="+num+","+"name="+name;
    }public int compareTo(Object o)
    {
      Student s=(Student)o;
      return num>s.num ? 1 : (num==s.num ? 0 : -1);
    }public static void main(String args[])
    {
      Student[] ss=new Student[]{new Student(1,"zhangsan"),
                                      new Student (2,"lisi"),
                                      new Student(3,"wangwu")};
            Arrays.sort(ss);
            for(int m=0;m <ss.length;m++)
            {
              System.out.print(ss[m]);
            }
        }
    }
      

  9.   

    把ToString方法名改为toString,重载Object的方法时,最好copy原方法名,这样100%不会出错!