2017-03-09 64 views
0

我有一个文本文件“NYRoadNetwork.txt”,其中包含一个加权图的以下信息:如何从Java中的文本文件为Dijkstra的最短路径算法生成加权图的映射?

第一行表示的节点的图中的数量,即30

第二行表示的数量连接图中任意两个节点的边,即17

剩余部分是连接任意两个节点的边的权重,例如。 “0 1 2”,在第三行意味着边缘连接节点0和1的重量为2

30 
17 
0 1 2 
2 3 0  
4 5 1 
6 7 3 
8 9 4 
8 10 3 
0 11 2 
1 12 1 
13 14 3 
15 16 4 
17 18 2 
19 20 3 
19 21 3 
22 23 6  
24 25 1   
26 27 1    
28 29 1  

现在,我的问题是,代替输入的每个节点和边一个接一个,我怎样可以写一个java代码从文本文件中读取数据后生成完整的图形?

仅供参考,这是我想修改的原始java代码的一部分。

// mark all the vertices 
    Vertex 0 = new Vertex("0"); 
    Vertex 1 = new Vertex("1"); 
    Vertex 2 = new Vertex("2"); 
    Vertex 3 = new Vertex("3"); 
    Vertex 4 = new Vertex("4"); ...... 

    // set the edges and weight 
    0.adjacencies = new Edge[]{ new Edge(1, 2) }; 
    0.adjacencies = new Edge[]{ new Edge(11, 2) }; 
    1.adjacencies = new Edge[]{ new Edge(12, 1) }; 
    2.adjacencies = new Edge[]{ new Edge(3, 0) }; 
    4.adjacencies = new Edge[]{ new Edge(5, 1) }; 
    6.adjacencies = new Edge[]{ new Edge(7, 3) }; ....... 
+0

'顶点0 =新顶点(“0”);' - 这不是Java。但无论如何,你的问题都是脱离主题。你没有写出解决问题的代码,我们也不会为你编写代码。这不是StackOverflow的工作方式。请访问[帮助]并阅读[问]获取更多信息,尤其是阅读[为什么是“有人可以帮助我?”不是一个实际问题?](http://meta.stackoverflow.com/q/284236/18157 ) –

回答

0

您可以使用BufferedReader来read a line from文件。

之后,使用String.split()方法将一行分割为一个字符串数组。

我建议你,在问这类问题之前,先浏览一下Java API。