我是java新手,刚刚开始一个项目,我需要从.txt文件创建一个网络,其中文件中的每一行都是“node1 node2”,节点之间有一个表格。我创建了一个节点类和一个边缘类,它们接受节点名称作为参数,现在我正在编写网络类。我使用 Arraylist 来存储节点和交互(边缘)信息,但我对如何在主程序中检索此信息感到困惑。目前的网络类:
import java.io.*;
import java.util.ArrayList;
public class Network {
public ArrayList<String> nodes = new ArrayList<String>();
public ArrayList<String> edges = new ArrayList<String>();
public String filename;
public Network(String f) {
this.filename = f;
FileReader networkinput = null;
try {
networkinput = new FileReader("f");
BufferedReader bufferedReader = new BufferedReader(networkinput);
//reads the argument file in.
String line = null;
while((line = bufferedReader.readLine()) != null) {
edges.add(line); // Adds each line of the file to the array
String delimiter = "\t";
String[] tempnodelist; // Creates an array each loop
tempnodelist = line.split(delimiter);
nodes.add(tempnodelist[0]); // Adds the first node
nodes.add(tempnodelist[1]); // Adds second node to node array.
}
bufferedReader.close();
}
catch (IOException e) {
System.out.println("Read Error!");
}
}
}
就目前情况而言,我希望这段代码接受文件,到达每一行并将每个节点放入数组列表“节点”中,并将每行(表示交互)放入数组列表“边缘”中。我不确定如何在主程序中检索此信息以检查它是否按照我的想法进行。
这段代码符合我的预期吗?如何在主程序中检索此 ArrayList 信息?
如有任何不清楚的地方,请提出任何问题。
最佳答案
创建Network
类的实例来初始化构造函数中发生的所有事情。然后访问数据。
public class TestNetwork {
public static void main(String[] args){
Network network = new Network("file.txt"); <-- create instance
ArrayList<String> nodes = network.nodes; <-- reference the data
ArrayList<String> edges = network.edges;
for (String s : nodes) { <-- traverse data
System.out.println(s); <-- print data
}
for (String s : edges){
System.out.println(s);
}
}
}
另外,我在你的构造函数中注意到的另一件事是这个
networkinput = new FileReader("f"); <-- "f" I don't think is the file path.
你应该使用这个
networkinput = new FileReader(f);
or
networkinput = new FileReader(filename);
注意:考虑@erzr2所说的。
关于java - 从类中检索 ArrayList 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594969/