package TestDataSort;public class TestDataSort { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Data[] days=new Data[10];
days[0]=new Data(2004,5,4);
days[1]=new Data(2005,4,3);
days[2]=new Data(2004,7,5);
days[3]=new Data(2004,7,1);
Data temp;
for(int i=days.length-1;i>0;i--)
for(int j=0;j<days.length-i-1;j++)
{
if((days[j].compare(days[j+1]))>0)
{
temp=days[j];
days[j]=days[j+1];
days[j+1]=temp;
}
}
}

}
class Data
{
int year,month,day;
Data(int year,int month,int day)
{
this.day=day;
this.month=month;
this.year=year;
}
public int compare(Data data )
{
return (year>data.year ? 1
:year<data.year? -1
:month>data.month? 1
:month<data.month? -1
:day>data.day? 1
:day<data.day? -1:0);
}

}
为什么总是说
Exception in thread "main" java.lang.NullPointerException
at TestDataSort.Data.compare(TestDataSort.java:40)
at TestDataSort.TestDataSort.main(TestDataSort.java:19)
大家帮我看看

解决方案 »

  1.   

    Data[] days=new Data[10]; 
    days[0]=new Data(2004,5,4); 
    days[1]=new Data(2005,4,3); 
    days[2]=new Data(2004,7,5); 
    days[3]=new Data(2004,7,1); 4-9没有定义,当然是null
      

  2.   

    你在“Data[] days=new Data[10];”中定义了10个Data类型数组,但是只给其中的0-3个变量赋值,然后有试图在 
    “for(int i=days.length-1;i>0;i--) ”循环中调用全部的数组变量,那些没有赋值的变量当然汇给你抛出错误。修改一下,要么只定义4个Data数组,要么把,剩下的变量全部赋值。
      

  3.   

    for(int j=0;j <days.length-i-1;j++) 

    if((days[j].compare(days[j+1]))>0) 
    使得days中的空地址NullPointerException 没有处理