import java.util.*;public class BookComp implements Comparator{
public int compare(Object object1,Object object2)
{
int time1[]=new int[3];
int time2[]=new int[3];
String j1=((Book)object1).time;
String j2=((Book)object2).time;
String split="-";
StringTokenizer token1 = new StringTokenizer(j1, split);
int i=0;
while (token1.hasMoreTokens()) 
{
time1[i]=Integer.parseInt(token1.nextToken());//截取时间放入字符串中
i++;
}
StringTokenizer token2 = new StringTokenizer(j2, split);
i=0;
while (token2.hasMoreTokens()) 
{
time2[i]=Integer.parseInt(token2.nextToken());//截取时间放入字符串中
i++;
}
for(i=0;i<3;i++)
{
if(time1[i]<time2[i]) return -1;  
else if (time1[i]>time2[i]) return 1;
else return 0;
}
}}
拜托拜托~~~~

解决方案 »

  1.   

    因为你的return在if语句内,编译器不知道到底能不能真的return到某个值
      

  2.   

        for (i = 0; i < 3; i++) {
          if (time1[i] < time2[i])
            return -1;
          else if (time1[i] > time2[i])
            return 1;
          else
            return 0;
        }这段代码有意义吗?
    改成
        i=0;
        if (time1[i] < time2[i])
          return -1;
        else if (time1[i] > time2[i])
          return 1;
        else
          return 0;我看,你的算法有问题。
      

  3.   

    改成
    int a;
    for(i=0;i <3;i++) 

    if(time1[i] <time2[i])  a=-1;   
    else if (time1[i]>time2[i])  a=1; 
    else  a=0; 
    } return a;
      

  4.   

    当然,如果楼主执意不改的话就应该在
    循环前声明一个int x=1;
    再在if语句中修改x
    最后return x;
      

  5.   

    回紫竹:当然有意义啦,因为我的time里面存了三个值嘛,如果第一个比不出来再比第二个,一个一个比下去咯。
    不过我知道错在哪儿了,谢谢你们~