我陷入了java抱怨比较方法错误的异常。
规则如下:我定义了一个名为 match 的类。想象一下搜索 2 个序列以找到相同的子字符串。如果存在 2 个相同的子字符串,则称其为匹配项。分数是子字符串的长度,seq1/2 开始/结束标记 2 个子字符串的开始和结束位置。目标是选择最长的子字符串匹配。如果两场比赛得分相同,我将选择两个序列中较早开始的一场比赛。否则,我通过使它们彼此相等来忽略其余部分。
这是错误的代码:
public class CompareMatch implements Comparator<match>{
@Override
public int compare(match o1, match o2) {
if(o1.score>o2.score) return -1;
if ((o1.score==o2.score)&&((o1.seq1start<o2.seq1start)&&(o1.seq2start<o2.seq2start)))
return -1;
if((o1.score==o2.score)&&!((o1.seq1start<o2.seq1start)&&(o1.seq2start<o2.seq2start)))
return 0;
return 1;
}
}
匹配类也定义如下:
public class match {
public int seq1start;
public int seq1end;
public int seq2start;
public int seq2end;
public int score;
}
有人可以帮我找出比较逻辑的哪一部分是错误的吗?我一定是重叠了其中一个条件。谢谢