我的代码没有正确比较不同长度的字符串

My code does not correctly compare strings of different length

我应该编写一个 compare 方法,它基本上可以完成 compareTo 方法的功能。我写了代码,但它不比较不同长度的字符串。 这是我的代码:

public static int compare(String a, String b)
{
    int result = 0;
    a = a.toLowerCase();
    b = b.toLowerCase();
    //program assumes strings are equal

    for (int i = 0; i<a.length() && i<a.length(); i++) {
        int c = a.charAt(i);
        int d = b.charAt(i);

        if (c < d){
            result = -1;
            break;
        }
        if (a.length() > b.length()) {
            result = -1;
            break;
        }
        if (a.length() < b.length()) {
            result = +1;
            break;
        }

        if (c > d) {
            result = 1;
            break;
        }
    }
    return result;
}

我已经完成了一个 if 循环来比较 2 个不同长度的字符串,但是,程序忽略了它。 我试图理解我的错误,所以请不要只给我答案而不解释,因为我不会学到任何东西。 提前谢谢。

首先,您要确保在逐个字符比较时,i 小于 a 的长度和 b 的长度。现在,您正在比较 ia' 的长度两次。

尝试:

//                                *
for (int i = 0; i<a.length() && i<b.length(); i++){

其次,如果您比较每个字符相等直到其中一个字符结束,您只想比较长度。将长度比较放在 for 循环之后。

第三,"mars"排在"marshall"之前,所以如果a的长度小于b的长度,那么它也比较少。

// After the for loop ends:
if(a.length() > b.length()){
     result = 1;
     break;   }
if(a.length() < b.length()){
     result = -1;
     break;