我正在为一个类项目工作,我被要求获取一个 .txt 文件,将数据聚合到不同的对象中,然后根据共享特征对该列表进行排序。我的指示是使程序能够导入多达 200 行文本。
我已经成功实现了导入 .txt 文件的程序,给定了一个定义的数组大小(如果 .txt 文件有 6 行,则为 6 个元素的数组),但我需要能够定义最多 200 个元素。当超出实际元素的数量(例如 6 个)时,它会引发 NullPointerException。当我的代码出现时,我似乎无法找到可能发生这种情况的地方,至少在视觉上,以处理可能发生的任何实例。这是发生问题的地方:
public Solid[] solids;
public int length;
public Measurer m;
public int h;
public SolidList(int size) {
length = 0;
solids = new Solid[size];
}
public void addSorted(Solid foo, Measurer m) {
int k = 0;
if (length != 0) {
while ((k < length) && foo.greaterThan(solids[k], m))
++k;
for (int j = length; j > k; --j)
solids[j] = solids[j - 1];
}
solids[k] = foo;
++length;
}
具体来说,Eclipse 在addSorted(...)
. 只有当数组确实有空元素时才会发生这种情况,但我想我无法弄清楚如何阻止该方法尝试访问空元素。