В моей программе создается массив fClasses
фиксированной длины [7] объектов, каждый объект представляет собой класс FClass
, который содержит 3 Strings
, int
и int[]
. Эти значения считываются из TXT файла и добавляются к определенному индексу массива на основе значения int
. В файле .txt меньше записей, тогда в массиве есть индексы, поэтому массив заканчивается тем, что выглядит примерно так:
fClasses[0] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[1] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[2] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[3] null
fClasses[4] null
fClasses[5] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
fClasses[6] { str1, str2, str3, int1, int [] {1,2,3,4,5}}
Позже в программе мне нужно отсортировать массив на основе среднего значения ints
в int[]
. У меня есть рабочий метод, чтобы вернуть это, но когда я пытаюсь сортировать массив с помощью compareTo
и Arrays.sort
, я получаю длинный список ошибок, начиная с них:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at FProg.sortClasses(FProg.java:228)
Мой метод compareTo
выглядит так и находится в классе, который реализует Comparable
:
public int compareTo(FClass other)
{
if (other == null || this.avg == other.avg)
{
return 0;
}
else if (this.avg < other.avg)
{
return -1;
}
else
{
return 1;
}
}
И я пытаюсь вызвать этот метод для сортировки:
public void sortClasses()
{
Arrays.sort(fClasses, 0, MAX_CLASSES);
}
Я тестировал его с .txt файлом, который содержит достаточно записей для заполнения массива, и сортировка работает правильно в этом случае, поэтому я считаю, что проблема, с которой я столкнулась, заключается в том, что мой метод сортировки не может сортировать массив с нулевые элементы в нем. Есть ли способ, которым это может быть достигнуто?