求大侠拯救
我得出的最后结果都是:
yrar:month:day==2007 5 6
yrar:month:day==2008 2 6
yrar:month:day==2003 5 6
yrar:month:day==2012 9 6
yrar:month:day==2008 5 6
没有排序的结果!代码如下:
class Date{
int year,month,day;
Date(int y,int m,int d)
{
year=y;month=m;day=d;
}
public int compare(Date date){
return year>date.year ? 1
 : year<date.year ? -1
     : month>date.month ? 1
     : month<date.month ? -1
     : day>date.day ? 1
     : day<date.day ? -1 : 0 ;
}
public String toString(){
return "yrar:month:day=="+year+" "+month+" "+day;

}
}
public class TestDateSort {
   public static void main(String args[]){
   Date d[]=new Date[5];
    d[0]=new Date(2007,5,6);
    d[1]=new Date(2008,2,6);
    d[2]=new Date(2003,5,6);
    d[3]=new Date(2012,9,6);
    d[4]=new Date(2008,5,6);   
    bubble(d);
   for(int i=0;i<d.length;i++){
   System.out.println(d[i]);
   }   }
   public static Date[] bubble(Date[] a){
   int len=a.length;
   for(int i=len-1;i>=1;i--){
   for(int j=0;i<=i-1;j++){
   if(a[j].compare(a[j+1])>0)
   {
   Date temp=a[j];
   a[j]=a[j+1];
   a[j+1]=temp;
   
   }
   }
   }
   return a;
   }
}

解决方案 »

  1.   


    for(int j=0;i<=i-1;j++){ //这里循环有问题改成
    for (int j=0; j<i; j++)
      

  2.   

    public int compare(Date date){
    return year>date.year ? 1
    : year<date.year ? -1
    : month>date.month ? 1
    : month<date.month ? -1
    : day>date.day ? 1
    : day<date.day ? -1 : 0 ;
    }代码改改吧...别采用条件判断式,改用if else
      

  3.   

    我发现错误了,在第二个for里面错误了:for(int j=0;i<=i-1;j++){
    应该是j<=i-1的!!!低级错误!!!!