我正在做一项作业,要求我比较两个字符串并确定它们是否按字母顺序排列。

我计划编写一个方法,该方法将两个字符串作为参数(字符串a,字符串b)并返回1、0或-1(所以是一个int),表示a> b,a
例如,比较(“ boogie”,“ orange”)将返回-1。从此,布吉
到目前为止,我的代码是

public static int compare(String a, String b) {
    for (int i = 0; i < a.length(); i++) {
        for (int j = 0; j < b.length(); j++) {
            char cha = a.charAt(i);
            char chb = b.charAt(j);
            if (cha < chb) {
                return -1;
            } else if (cha > chb) {
                return 1;
            }
        }
        return 0;
    }
}


但是,我遇到了很多错误,无法找到这些错误的修复程序。我也很难找到用于测量一个单词是否长于另一个单词的代码(这会影响字母顺序),有人可以帮助我调试代码并将其指向正确的方向吗?

提前谢谢了。

最佳答案

您不需要嵌套循环,因为您不想将一个String的每个字符与另一个String的每个字符进行比较。

您只需要一个循环:

public static int compare(String a, String b)
{
    int len = Math.min (a.length(),b.length());
    for (int i = 0; i<len; i++) {
        char cha = a.charAt(i);
        char chb = b.charAt(i);
        if (cha < chb) {
            return -1;
        } else if (cha > chb) {
            return 1;
        }
    }
    if (a.length() < b.length())
        return -1;
    else if (a.length() > b.length())
        return 1;
    else
        return 0;
}


至于处理不同长度的字符串,如果发现2个字符串中的较短者等于较长字符串的前缀,则如果a是较短的字符串,则返回-1,如果b较短,则返回1(因为较短的String应该排在长者之前)。

09-30 17:04
查看更多