我正在構建一個服務器,向客戶端發送問題,然後從它們接收答案,但是當我向客戶端發送問題時,我想讓它再次發送一小時不可行,我的意思是之後我發送一個問題給客戶端,我想一小時,這個問題就會永遠不會給任何其他客戶端,Java HashTable空指針異常
static Hashtable<Integer, List<Integer>> unavialbeQuestions =
new Hashtable<Integer, List<Integer>>();
關鍵是ClientID的,價值是問題的ID,將永遠不會發送到列表那個客戶在一個小時內,這個功能我用來提出問題,因爲這個功能有問題
public void setUnavialbeQuestion(final String cellName, final int questionID) {
List<Integer> cells = getCellsIntersectedWithCell(cellName);
int cellID = getCellID(cellName);
cells.add(cellID);
for (int i = 0; i < cells.size(); i++) {
if (unavialbeQuestions.containsKey(cellID)) {
unavialbeQuestions.get(cells.get(i)).add(questionID);
} else {
List<Integer> lll = new LinkedList<Integer>();
lll.add(questionID);
unavialbeQuestions.put(cellID, lll);
}
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
f(cellName, questionID);
}
}, 1000 * 120);
}
}
看一小時後,將解僱(在我的演示只是2分鐘)功能f()
,這裏的問題是,我在執行f()
功能時得到了空指針異常:
protected void f(String cellName, int questionDI) {
// TODO Auto-generated method stub
List<Integer> cells = getCellsIntersectedWithCell(cellName);
int cellID = getCellID(cellName);
cells.add(cellID);
for(int i=0;i<cells.size();i++){
int index = unavialbeQuestions.get(cells.get(i)).indexOf(questionDI);
unavialbeQuestions.get(cells.get(i)).remove(index);
}
}
在index
參數外, 我究竟做錯了什麼?
將有助於有NPE堆棧跟蹤 – andersoj 2012-07-06 11:26:33
@andersoj我不知道NPE – Totti 2012-07-06 11:27:28
NPE = NullPointerException異常 – assylias 2012-07-06 11:27:39