2017-04-11 2 views
0

Dies ist eine Hausaufgabe und ich versuche, einen Pfad zwischen Start-Vertex v und End-Vertex u finden. Ich wurde mit einer Testklasse ausgestattet, um die Methode zu testen, und leider erhalte ich Null-Zeiger-Ausnahmen.DFS-Diagramm-Pathfinding gibt Null-Zeiger-Ausnahme

Gibt es offensichtliche Fehler bei meinen Methoden?

Danke!

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); 
} 

Stacktrace:

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) 

Diese if-Anweisung 107:

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

Veröffentlichen Sie den Stacktrace – stinepike

+0

@StinePike hinzugefügt! – Strobe00

+0

Also das Problem ist in einem anderen Teil Ihres Codes ... post den Code, wo Sie diese Methode aufgerufen haben – stinepike

Antwort

0

können Sie beziehen sich meine code DFS-Algorithmus zu implementieren.

Verwandte Themen