В принципе, назначение является задницей и не хочет, чтобы мы использовали существующий метод для сравнения двух строк в алфавитном порядке.Сравнение строк без использования String.compareTo в Java
Он должен возвращать 1, если первая строка «больше» в алфавитном порядке, чем вторая (в том смысле, что «g» больше, чем «a»), -1, если вторая больше, или 0, если они являются одна и та же.
Допустим, у меня есть
String a = "Cows";
String b = "Horses";
метод возвращает -1.
Мое понимание использовать для() цикл сканирования А и Б, используя Шара(), но я понятия не имею, как реализовать это ...
EDIT ***
прочитав ответы, я придумал это.
int compared = 0;
for (int i = 0; i<s1.length() && i<s2.length(); i++){
int a = s1.charAt(i);
int b = s2.charAt(i);
if(a < b){
compared = -1;
}
else if(a > b){
compared = 1;
}
}
return compared;
Строки, которые сравниваются, начинаются с прописных букв, поэтому это не должно быть проблемой. Тем не менее, при использовании обычного метода String.compareTo() и метода bubblesort, который подсчитывает количество раз, когда этот метод вызывался при сортировке массива строк с предварительным прерыванием, я получаю разные результаты, что означает, что что-то явно не так.
Для людей, просматривающих это и с той же проблемой, вот как работает код
int compared = 0;
//program assumes strings are equal
for (int i = 0; i<s1.length() && i<s2.length(); i++){
//for() loop goes on until the largest string
int a = s1.charAt(i);
int b = s2.charAt(i);
//convert char into int for comparison just in case
if(a < b){
compared = -1;
break;
//breaks at the first occurence of non equal characters
}
else if(a > b){
compared = 1;
break;
//same as above
}
}
return compared;
Похоже, что у вас есть идея. Это 'for' loop и' charAt' вещь. Попробуй это. – khelwood