【发布时间】:2015-02-17 19:15:38
【问题描述】:
在我的程序中,创建了一个固定长度 [7] 的对象数组fClasses,每个对象都是一个类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}}
稍后在程序中,我需要根据int[] 中的ints 的平均值对数组进行排序。我有一个工作方法来返回它,但是当我尝试使用 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 文件对其进行了测试,并且在这种情况下排序工作正常,所以我相信我遇到的问题是我的排序方法无法对数组进行排序其中的空元素。有什么办法可以实现吗?
【问题讨论】:
标签: java arrays sorting compareto