Я пытаюсь написать программу, которая должна сортировать две строки в алфавитном порядке, а если s1 предшествует s2, верните -1, если s1 появится после s2, return 1, и если это одно и то же слово, напечатайте 0. Итак, для s1 = "king" и s2 = "kink", он должен печатать -1. Мне удалось реализовать это для слов, которые не начинаются с одного и того же письма, но для слов, которые этого не делают, например, «king» и «kink», я сталкиваюсь с трудностями.Программа, которая сортирует строки по алфавиту без сравнения. To (Java)
public static int compare(String a, String b)
{
int comparison = 0;
int c1, c2;
for(int i = 0; i < a.length() && i < b.length(); i++)
{
c1 = (int) a.toLowerCase().charAt(i);
c2 = (int) b.toLowerCase().charAt(i);
comparison = c1 - c2;
if(comparison == 0)
{
if(a.length() > b.length())
return 1;
else if (a.length() < b.length())
return -1;
else
return 0;
}
else if (comparison > 0)
return 1;
else
return -1;
}
return comparison;
}
Я чувствую, что вопрос с моей за цикл, что я не позволяя ему пройти через всю строку, но я не уверен, как это исправить.
Вместо возврата '0', когда' сравнение' равно '0' - вы должны попробовать использовать' continue'. – Tirath
Я думаю, вам лучше использовать значения часов для каждого цикла, чтобы вы могли определить, что вы получаете в каждом цикле. или вы можете распечатать значения c1 и c2 в каждом цикле, чтобы вы могли найти, получаете ли вы ожидаемый результат. –
@ Тират благодарит за помощь, теперь он может в алфавитном порядке «король» и «король» и т. д. соответственно. Похоже, что он не распознает пробелы, хотя, например, «привет» и «привет» возвращает 0, когда требуется вернуть -1. Есть идеи? – jofl