Попытка написать сортировку вставки для сортировки массива строк.
public static void insertionSort(String[] list)
{
for (int i = 1; i <list.length; i++)
{
String currentElement = list[i];
int k;
for (k=i-1; k >= 0 && list[k] > currentElement; k--) //error here
{
list[k+1]=list[k];
}
list[k+1] = currentElement;
}
}
Я получаю ошибку. Оператор> не определен для типа аргумента, но я думал, что узнал в классе, что вы можете сравнивать строки с помощью>, <и т.д.? Как я могу решить эту проблему?
Вы не можете сравнивать объекты, включая String
s, с операторами сравнения, такими как >
. Вы должны вызвать метод, который выполняет сравнение. String
Comparable
<String>
, поэтому замените
list[k] > currentElement
с
list[k].compareTo(currentElement) > 0
Нет. Вы не можете сравнивать любой объект, включая String, с более крупными или меньшими операторами.
Вы можете сравнивать строки, используя сопоставление, которое зависит от языка. Если вы хотите сравнить строки на основе значений Unicode своих символов, вы можете использовать метод compareTo(String)
класса String. См. Документацию по Java для класса String.