idi*_*ast 0 java arrays sorting polymorphism
我正在为一个项目工作,我被要求获取一个.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;
}
Run Code Online (Sandbox Code Playgroud)
具体来说,Eclipse在while循环中遇到NullPointerException addSorted(...).只有当数组确实具有null元素时才会发生这种情况,但我想我无法弄清楚如何阻止该方法尝试访问null元素.
if (length != 0) {
while ((k < length) && solids[k] != null && foo.greaterThan(solids[k], m))
++k;
if(solids[k] == null) {
return;
}
for (int j = length; j > k; --j)
solids[j] = solids[j - 1];
}
Run Code Online (Sandbox Code Playgroud)
可能会解决问题.但是你应该考虑使用Collections(查看ArrayList)来处理动态输入长度的集合/数组.