我正在做一项作业,要求我比较两个字符串并确定它们是否按字母顺序排列。
我计划编写一个方法,该方法将两个字符串作为参数(字符串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应该排在长者之前)。