我正在创建一个飞行图,其中用户我希望能够打印出我的图形,如:
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
谢谢。