Java实现可比较

时间:2014-02-24 13:43:49

标签: java sorting compareto

我试图在Java中覆盖compareTo,使其工作如下。将有两个字符串数组,每个数组包含k个字符串。 compareTo方法将按顺序遍历单词,比较每个数组的第k个元素。然后将对数组进行分类。我目前的代码如下,但它无法正常工作。

我需要在for循环之外的return语句。我不确定这个return语句应该返回什么,因为总会有一个for循环返回语句。

另外,我在这里正确使用continue吗?

public int compareTo(WordNgram wg) {
    for (int k = 0; k < (this.myWords).length; k++) {
        String temp1 = (this.myWords)[k];
        String temp2 = (wg.myWords)[k];
        int last = temp1.compareTo(temp2);
        if (last == 0) {
            continue;
        } else {
            return last;
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您想比较同一位置的两个字符串:

int last = temp1.compare(temp2);

答案 1 :(得分:0)

Java编译器要求所有端点必须具有return语句。在你的情况下,你必须在结尾返回0,所以当两个数组包含完全相等的字符串时,调用者将知道它们是相等的。

答案 2 :(得分:0)

你应该开始听你的编译器了,因为在看了你的代码1分钟后,我发现了两个未定义的状态:this.myWords.length0,两个字是相等的。

另外,我个人发现很难处理多个方法出口点,考虑所有输入的可能性,而是插入一个返回语句,这使得调试更容易,结果更可预测。例如,在您的情况下,如果它们与compareTo不同,我会收集集合中0的结果,以便在for循环完成后,您可以决定此集合的状态{可以返回{1}}(空集合)或集合中的第一个值。我更喜欢这种更正式的方法,因为它强制你像集合那样思考集合,“除了0之外,compareTo除了0之外的任何其他结果时给我所有比较结果。如果此列表为空,则比较结果是0,否则它是列表的第一个元素。“