我正在创建用户的航班图表 我希望能够打印出我的图表,如:
Edinburgh <-> Heathrow
Heathrow <-> Amsterdam
etc....
我有一个想法是通过获取边缘源和边缘目标来实现这一点,边缘是“&lt; - &gt;” ,来源是例如“爱丁堡”,目标是“希思罗机场”。
我已经尝试循环遍历String数组并打印,例如graph.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("");
}
答案 0 :(得分:2)
我已经弄明白了如何显示边缘源和目标:
for(DefaultWeightedEdge e : airport.edgeSet()){
System.out.println(airport.getEdgeSource(e) + " --> " + airport.getEdgeTarget(e));
}
然而,这显示它看起来像:
Edinburgh --> Heathrow
Heathrow --> Edinburgh
我如何对其进行格式化,以便我可以看起来像:
Edinburgh <-> Heathrow
此格式应告知用户航班是返程航班。
感谢您提供更多帮助。