2

有向グラフを学習して実装しようとしていますが、プログラムを実行する際にいくつかの問題に直面しています。

// ADD Function
public boolean addVertex(Vertex<T> v)
{
    boolean added = false;
    if (verticies.contains(v) == false)
    {
        added = verticies.add(v);
        return true;
    }
    return added;
}

class Vertex<T>
{

    private String name;
    private T data;

    /**
     * Create a Vertex with name n and given data
     *
     * @param n - name of vertex
     * @param data - data associated with vertex
     */
     public Vertex(String n, T data)
     {
         incomingEdges = new java.util.ArrayList<Edge<T>>();
         outgoingEdges = new java.util.ArrayList<Edge<T>>();
         name = n;
         this.data = data;
     }
}

// Initialization of the Vertices & Edges
public GraphImpl()
{
    verticies = new java.util.ArrayList<Vertex<T>>();
    edges = new java.util.ArrayList<Edge<T>>();
}

エラー: プログラムの実行時に、addVertex(String) 関数が呼び出されたときに入力として文字列を入力すると、文字列を頂点に変換できないというエラーが表示されます。Java からエラーが記録されました: java.lang.ClassCastException: java.lang.String を DG.Vertex に変換できません

誰かが私に説明してもらえますか、私が間違っていることを教えてください。ありがとうございました。

4

1 に答える 1

1

問題は、関数 addVertex(String) がないことです。

関数は addVertex(Vertex) であるため、新しい Vertex オブジェクトを作成し、それをグラフに追加する必要があります。重要なのは、頂点には名前とデータの両方が必要だということです。

サンプルコード:

DirectedGraph<String> directedGraph = new DirectedGraph<String>();
// Create a vertex object with both a name and data
Vertex<String> sampleVertex = new Vertex<String>("name", "data"):
directedGraph.addVertex(sampleVertex);

それでも問題が解決しない場合は、Edge クラスと addVertex() を呼び出そうとするメイン メソッドを含む例を投稿してください。

于 2014-12-10T21:54:53.117 に答える