2017-04-11 83 views
0

這是一項家庭作業,我試圖在起始頂點v和結束頂點u之間找到路徑。我被提供了一個測試類來測試該方法,不幸的是我得到空指針異常。DFS圖形路徑查找給空指針異常

我的方法是否有任何明顯的錯誤?

謝謝!

public Iterator<Vertex<V>> returnPath(Graph<V> g, Vertex<V> v, Vertex<V> u){ 
    Iterator<Vertex<V>> result; 
    Iterator<Edge<V>> it; 
    Edge<V> e; 
    Vertex<V> w; 

    v.setMarker(true); 
    S.push(v); 
    if(v.equals(u)){ 
     return S.listIterator(); 
    } 
    it = v.incidentEdges(); 
    while(it.hasNext()){ 
     e = it.next(); 
     w = g.giveOpposite(v, e); 
     if(!w.getMarker()){ 
      result = returnPath(g, w, u); 
      if(result != null){ 
       return result; 
      } 
     } 
    } 
    S.pop(); 
    return null; 
} 

public Iterator<Vertex<V>> givePath(Graph<V> g, Vertex<V> v, Vertex<V> u){ 
    S.clear(); 
    return returnPath(g, v, u); 
} 

堆棧跟蹤:

Exception in thread "main" java.lang.NullPointerException 
at TestPath.main(TestPath.java:107) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

這if語句是107:

Iterator<Vertex<Integer>> it = fp.givePath(g,lookup.elementAt(i),lookup.elementAt(j)); 
       if (!it.hasNext()){ 
+0

發佈堆棧跟蹤 – stinepike

+0

@StinePike新增了! – Strobe00

+0

所以這個問題是在你的代碼的其他部分......發佈你調用這個方法的代碼 – stinepike

回答