我正在開發一個項目,用於要求我獲取.txt文件的類,將數據聚合到不同的對象中,然後根據共享特徵對該列表進行排序。我的指示是使程序能夠導入多達200行的文本。在Java中進行多態性,繼承和數組排序練習
我已經成功實現了導入.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是遇到在while循環的空指針異常在addSorted(...)
。這隻會發生如果數組確實有空元素,但我想我不知道如何防止該方法試圖訪問空元素。
首先,對於原始數組的實例列表,使用java收集要好得多。在這種情況下,尺寸可能不是先驗的。 – gregory561
我與格雷戈裏,檢查出ArrayList - > http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html 你也應該只使用一個Collections.sort用一個比較器來完成排序 - > http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#sort(java.util.List,java.util.Comparator ) –
你真的應該發佈異常堆棧跟蹤。這樣人們只是猜測你的問題。顯示的代碼不會拋出NPE,除非foo爲null。 stacktrace可能會顯示NPE是從'greaterThan'方法中拋出的。 –