一个JAVA简单问题,我是个初学者,下面这段代码编译后说无法比较,不明白是什么意思,哪位高手能帮忙指点以下public class BubbleSortBinary
{
public static void main(String args[])
{
Date days[] = new Date[5];
days[0] = new Date(2006, 5, 4);
days[1] = new Date(2006, 7, 4);
days[2] = new Date(2008, 5, 4);
days[3] = new Date(2004, 5, 9);
days[4] = new Date(2004, 5, 4);
bubbleSort(days); for(int i=0; i<days.length; i++)
{
System.out.println(days[i]);
} binarySearch(days, "2006, 7, 4");
} public static void bubbleSort(Date days[])
{
for(int i=days.length-1; i>=1; i--)
{
for(int j=0; j<=i-1; j++)
{
if(days[j].compary(days[j+1])>0)
{
Date temp = days[j];
days[j] = days[j+1];
days[j+1] = temp;
}
}
}
} public static int binarySearch(Date days[], String s)
{
int beginposition = 0;
int endposition = days.length-1;
int middle = (beginposition + endposition)/2; while(beginposition < endposition)
{
if(days.length == 0)
{
return -1;
}

if(s == days[middle])//字符串比较
{
return middle;
} if(s >= days[middle])//字符串比较
{
beginposition = middle + 1;
} if(s <= days[middle])//字符串比较
{
endposition = middle - 1;
} middle = (beginposition + endposition)/2;
}

return -1; }
}class Date
{
int year, month, day;
Date(int y, int m, int d)
{
year = y;
month = m;
day = d;
} public int compary(Date date)
{
if((this.year > date.year)||((this.year == date.year)&&(this.month > date.month))||((this.year == date.year)&&(this.month == date.month)&&(this.day > date.day)))
{
return 1;
}
if((this.year == date.year)&&(this.month == date.month)&&(this.day == date.day))
{
return 0;
}
else
{
return -1;
}
} public String toString()
{
return "year:month:day:"+year+" "+month+" "+day;
}
}

解决方案 »

  1.   

    if(s == days[middle])//字符串比较
                            {
                                    return middle;
                            }                        if(s >= days[middle])//字符串比较
                            {
                                    beginposition = middle + 1;
                            }                        if(s <= days[middle])//字符串比较
                            {
                                    endposition = middle - 1;
                            }
    这里String 类不能用大于小于来比较
      

  2.   

    if(s == days[middle])//字符串比较
    if(s <= days[middle])//字符串比较
    ......days是Date类型的,s
      

  3.   

    ......days是Date类型的,s是String类型的...
      

  4.   

    是不是可以把你的那个"2006, 7, 4"也换成date类型的试试..