Я уже некоторое время пытаюсь исправить эту ошибку, но никак не могу ее решить. Цель приведенной ниже программы - использовать пузырьковую сортировку для упорядочивания массива имен в алфавитном порядке. Например, если имена [«Боб Джо», «Боб Франк» и «Боб Джонсон»], правильно отсортированный массив будет [«Боб Франк», «Боб Джо», «Боб Джонсон»].
Основная проблема, с которой я столкнулся, - это сравнение любых двух строк после name.charAt (0). Если я сравниваю только символы любых двух строк в 1 определенной c индексной точке, мой код работает. Однако, если я попытаюсь заставить сравнение переместиться за индекс 0, если индекс 0 обеих строк равен друг другу, моя программа больше не работает.
Код показан ниже
public static void sortAlpha (String names[])
{
for (int i = 0 ; i < names.length - 1 ; i++)
{
for (int a = 0 ; a < names.length - 1 - i ; a++)
{
int length1 = names [a].length ();
int length2 = names [a + 1].length ();
int min = 1;
if (length1 > length2)
{
min = length2;
}
else
{
min = length1;
}
for (int b = 0 ; b < min ; b++)
{
if ((int) names [a].toLowerCase ().charAt (b) > (int) names [a + 1].toLowerCase ().charAt (b))
{
String tempName = names [a];
// sort:
names [a] = names [a + 1];
names [a + 1] = tempName;
break;
}
}
}
}
}
Если я просто установлю минимальное значение равным 1, код будет запущен и выполнит свою работу. Однако, если минимальное значение остается динамическим c, программа не работает. Я пытаюсь понять, почему это так, и что исправить. Любая помощь будет оценена!