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)
大家帮我看看
* @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)
大家帮我看看
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
“for(int i=days.length-1;i>0;i--) ”循环中调用全部的数组变量,那些没有赋值的变量当然汇给你抛出错误。修改一下,要么只定义4个Data数组,要么把,剩下的变量全部赋值。
{
if((days[j].compare(days[j+1]))>0)
使得days中的空地址NullPointerException 没有处理