我要使搜索方法更有效,我決定使用二分搜索。我想使用此搜索將每個項目行號添加到找到的單詞列表中,並顯示每個項目被找到的次數。但我的代碼似乎沒有工作...二進制搜索和在Java中添加
private static void searchAndAdd(List<Word> wl, String w, int ln) {
boolean found = false;
Iterator<Word> wit = wl.listIterator();
int min = 0;
int max = wl.size()-1;
int bsearch = binarySearch(wl, w, min, max);
while (found && wit.hasNext()) {
Word wd = wit.next();
if (bsearch == -1)
{
wd.addLineNumber(ln);
}
}
if (!found)
wl.add(0, new Word(w, ln));
}
private static int binarySearch(List<Word> arr, String w, int min, int max) {
if (min < max) {
return NOT_FOUND;
}
int mid = (min + max) /2;
Word w2 = arr.get(mid);
if (w.compareTo(w2.toString()) > 0) {
return binarySearch(arr, w, mid + 1, min);
} else if (w.compareTo(w2.toString()) < 0) {
return binarySearch(arr, w, min, mid - 1);
} else {
return mid;
}
我總是得到這樣的錯誤:
in thread "main" java.lang.NullPointerException
at Concordance.binarySearch(Concordance.java:131)
at Concordance.searchAndAdd(Concordance.java:114)
at Concordance.main(Concordance.java:51)
對此不起作用? – nojo 2011-03-22 21:06:45
它不斷給我這個errorException線程 「main」 顯示java.lang.NullPointerException \t在Concordance.binarySearch(Concordance.java:131) \t在Concordance.searchAndAdd(Concordance.java:114) \t在Concordance.main( Concordance.java:51) – namdizy 2011-03-22 21:09:14
似乎沒有添加該行。 – namdizy 2011-03-22 21:09:50