打印图形顶点和边源/目标-JGraphT



我正在创建一个飞行图,其中用户我希望能够打印出我的图形,如:

Edinburgh <-> Heathrow
Heathrow <-> Amsterdam
etc....

我有一个想法,通过获取边缘源和边缘目标来实现这一点,边缘是"<->",例如源是"Edinburgh",目标是"Heathrow"。

我已经尝试过在String数组中循环并打印,例如graphic.getEdge(sourceVertext,targetVertex),但我似乎无法使其工作。

我只在代码中使用几个示例。

注意:如果我在设置边权重后尝试打印数组,我会得到一个非法的参数异常。如果有人能解释为什么会发生这种情况,那也太好了:)谢谢。

public static void main(String[] args) {
    SimpleDirectedWeightedGraph<String, DefaultWeightedEdge> airport = new SimpleDirectedWeightedGraph<String, DefaultWeightedEdge>(
            DefaultWeightedEdge.class);
    String[] array = { "Edinburgh", "Heathrow", "Amsterdam" };
    System.out.println(" ");
    System.out.println("The following destinations are used: " + "n");
    for (String s : array) {
        System.out.println(s); // prints the array elements
    }
    System.out.print("");
    for (String s : array) {
        System.out.print(airport.getEdgeSource(s) + airport.getEdgeTarget(s));
        // OR....
        // System.out.print(airport.getEdge(sourceVertex, targetVertex));
    }
    DefaultWeightedEdge EH1 = airport.addEdge("Edinburgh", "Heathrow");
    DefaultWeightedEdge HE1 = airport.addEdge("Heathrow", "Edinburgh");
    airport.setEdgeWeight(EH1, 110);
    airport.setEdgeWeight(HE1, 110);
    DefaultWeightedEdge HA2 = airport.addEdge("Heathrow", "Amsterdam");
    DefaultWeightedEdge AH2 = airport.addEdge("Amsterdam", "Heathrow");
    airport.setEdgeWeight(HA2, 100);
    airport.setEdgeWeight(AH2, 100);
    System.out.println("");
}

我已经找到了如何显示边缘源和目标:

for(DefaultWeightedEdge e : airport.edgeSet()){
    System.out.println(airport.getEdgeSource(e) + " --> " + airport.getEdgeTarget(e));
}

这显示为:

Edinburgh --> Heathrow
Heathrow --> Edinburgh

谢谢。

最新更新