2011-11-19 24 views
-2

我使用linkedhashset來存儲我的同義詞列表。如果我的搜索詞有同義詞,則會做一些說明。但是,當我的搜索詞沒有同義詞時,會發生一些錯誤。以下是我的程序的一部分。錯誤在linkedhashset中使用isEmpty()

String[] synset = wordnet.getAllSynsets(keyword, "n"); 
Set<String> synsetVec = new LinkedHashSet<String>(); 
for (int k = 0; k < synset.length; k++) { 
    //store synonym in synsetVec 
    synsetVec.add(s.Stem(synset[k])); 
    System.out.println("SynsetVec = " + synsetVec); 

    if (!synsetVec.isEmpty()) { 
     //do something here 
    } else { 
     GUIsynonymTA.append("No synsets"); 
    } 
} 

這個錯誤「java.lang.NullPointerException」在沒有搜索詞的synset時出現。誰能幫我?提前致謝。

+0

什麼是GUIsynonymTA和它在哪兒初始化上 – Kal

+0

你得到了什麼行代碼中的空指針? (相關stacktrace plz) –

+0

您應該使用調試器:在示例的第一行設置一個斷點,並在調試模式下執行程序。調試器將在執行包含斷點的行之前暫停您的代碼。然後,您可以一次執行一個步驟(步驟執行)並檢查變量,以查看代碼中斷的位置和時間。 – zloster

回答

2

基於有限的信息,我假設您在執行sunset.lenght時,NPE正在for循環線上發生。發佈堆棧跟蹤將使得回答更容易。

嘗試:

String[] synset = wordnet.getAllSynsets(keyword, "n"); 
Set<String> synsetVec = new LinkedHashSet<String>(); 
if(sunset != null){ 
    for (int k = 0; k < synset.length; k++) { 
     //store synonym in synsetVec 
     synsetVec.add(s.Stem(synset[k])); 
     System.out.println("SynsetVec = " + synsetVec); 

     if (!synsetVec.isEmpty()) { 
      //do something here 
     } else { 
      GUIsynonymTA.append("No synsets"); 
     } 
    } 
} 
+0

謝謝..我解決了它。 –

+0

如果你解決了它,實際接受答案會很好。 – aberrant80