import java.util.Arrays;public class Main
{ public static void main(String[] args)
{
Student []arr=new Student[10];
arr[0]=new Student("Tom",23);
arr[1]=new Student("Jerry",24);
arr[2]=new Student("Marry",20);
arr[3]=new Student("Jeck",22);
arr[4]=new Student("Torry",25);

Arrays.sort( arr );

for(int i=0;i<5;i++){
System.out.println( arr[i] );
} }}异常是:Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.mergeSort(Arrays.java:1144)
at java.util.Arrays.mergeSort(Arrays.java:1156)
at java.util.Arrays.sort(Arrays.java:1079)
at 对象排序.Main.main(Main.java:17)
请大家告诉我问题出在哪  应该怎么解决

解决方案 »

  1.   

    数组中的所有元素都必须实现 Comparable 接口。
      

  2.   

    对对象排序首先要实现Comparable接口
    其次才能用Arrays.sort去排序
      

  3.   

    没问题  已经实现了Comparable 接口 就是在测试类这出的问题
    我要是这样写 就一切正常 Student []arr={
    new Student("Tom",23),
    new Student("Jerry",24),
    new Student("Marry",20),
    new Student("Jeck",22),
    new Student("Torry",25)
    };

    Arrays.sort( arr );

    for(int i=0;i<5;i++){
    System.out.println( arr[i] );
    }
      

  4.   

    为什么会这样呢?对象不使用  默认是null 干嘛要异常?
      

  5.   

    给你看Arrays.sort()的源码:public static void sort(Object[] a) {
        Object[] aux = (Object[])a.clone();
        mergeSort(aux, a, 0, a.length, 0);
    }再看mergeSort(aux, a, 0, a.length, 0):private static void mergeSort(Object[] src,
      Object[] dest,
      int low,
      int high,
      int off) {
    int length = high - low;// Insertion sort on smallest arrays
          if (length < INSERTIONSORT_THRESHOLD) {
              for (int i=low; i<high; i++)
                  for (int j=i; j>low &&
     ((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
                      swap(dest, j, j-1);
              return;
          }
    ......看到了没?  你只实例化了arr[0] - arr[4],后面arr[5]-arr[9]都为null, 它没法比较啊.
    但是你可以用Arrays另外一个sort方法,它带一个Comparator参, 也就是要传递一个比较器过去, 
    在这个比较器里面, 你可以判断被比较的对象是不是null.
      

  6.   

    你的数组分配了10个元素的空间,就意味着10个元素都要参加比较,当null.compareTo就会NullPointerException 
      

  7.   

    因为你多分配了5个Student的空间. 你实现的Comparable接口如果访问到这5个Student的属性自然就会抛出NullPointerException