2012-05-13 10 views
1

UndirectedGraphの使用に関する問題があります。私のコード:JGraphT - UndirectedGraph - addEdgeメソッドが機能しない

UndirectedGraph<String, DefaultEdge> graph = 
      new SimpleGraph<String, DefaultEdge>(DefaultEdge.class); 

String v1 = "v1"; 
String v2 = "v2"; 
String v3 = "v3"; 
String v4 = "v4"; 

graph.addVertex(v1); 
graph.addVertex(v2); 
graph.addVertex(v3); 
graph.addVertex(v4); 

graph.addEdge(v1, v2); 
graph.addEdge(v2, v3); 
graph.addEdge(v3, v4); 
graph.addEdge(v4, v1); 

各頂点がグラフに正常に追加されました。 Hovewer、addEdgeメソッドが正しく動作しませんでした。このコードをデバッグすると、最初にaddEdge行が例外クラスを見つけられませんでした。

私はあなたが私を助けてくれることを願っています。ありがとう。

答えて

1

jgrapht-0.8.3と...実装するクラスであるSimpleGraphを、試してみてください。

import org.jgrapht.UndirectedGraph; 
import org.jgrapht.graph.DefaultEdge; 
import org.jgrapht.graph.SimpleGraph; 

public class GraphTest { 

    public static void main(String[] args) { 
    UndirectedGraph<String, DefaultEdge> graph = 
     new SimpleGraph<String, DefaultEdge>(DefaultEdge.class); 

    String v1 = "v1"; 
    String v2 = "v2"; 
    String v3 = "v3"; 
    String v4 = "v4"; 

    graph.addVertex(v1); 
    graph.addVertex(v2); 
    graph.addVertex(v3); 
    graph.addVertex(v4); 

    graph.addEdge(v1, v2); 
    graph.addEdge(v2, v3); 
    graph.addEdge(v3, v4); 
    graph.addEdge(v4, v1); 

    if(graph.getEdge(v1, v2) != null) { System.out.println("SUCCESS"); } 
    if (graph.getEdge(v2,v4) == null) { System.out.println("SUCCESS"); } 
    } 
} 

I取得

SUCCESS

SUCCESS

どのような問題が発生しているかを明確にすることはできますか?

-1

UndirectedGraphはインターフェイスのようです。予想通り、次の作品、多分

+0

質問者コードはインタフェースを誤用しません。 SimpleGraphが使用されます(質問者のコードで 'graph'の初期化を参照してください) – andersoj