Вы должны убедиться, что типы данных совпадают, как упоминалось до того, как ваш класс BubbleSort работает только с массивом int, этот код был изменен для работы с двойными массивами (что содержит diff).
Когда вы изменили dif на int и получили сообщение «потеря точности», это потому, что вы делаете деление (строки 43-47 в GolfScores.java), а затем присваиваете результат int (которыйотбрасывает дробные значения).
Вот версия BubbleSort, которая компилируется без ошибок и предупреждений.Внесенные мной изменения (их 3) отмечены как комментарии:
public class BubbleSort
{
public static void sort(double[] a, int numberUsed) //change here
{
int index;
for ( int i =0; i<numberUsed; i++)
{
for (index = 0; index<a.length - 1; index++)
{
if (a[index]> a[index + 1])
{
interchange(index, index + 1, a);
} //end of if ()
} //end of for ()
} //end of for ()
}
private static void interchange(int i, int j, double[] a) //change here
{
double temp1; //change here, important
temp1 = a[i];
a[i] = a[j];
a[j] = temp1;
}
}
Код можно сделать более гибким, используя объекты вместо примитивных типов (например, сортируйте массив Object вместо double)и, возможно, используя пользовательскую функцию для сравнения элементов, таким образом, вам не нужно будет изменять класс для обработки разных типов данных.Тем не менее, если вы собираетесь использовать гораздо больше возможностей и стандартных библиотек Java, вы можете также использовать метод Arrays.sort. На этой странице объясняется использование встроенных методов сортировки (а также почему вы не должны писать свои собственные процедуры сортировки , если это не какие-то академические задания) лучше, чем я.