我的代码没有正确比较不同长度的字符串
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
的长度。现在,您正在比较 i
和 a'
的长度两次。
尝试:
// *
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;
我应该编写一个 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
的长度。现在,您正在比较 i
和 a'
的长度两次。
尝试:
// *
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;