2 回答
TA贡献1802条经验 获得超4个赞
在这里做了一些改变。我读到“NODE_COORD_SECION”然后开始解析存储行的ans。我不是在“”上拆分,而是在“”上拆分并存储值。
public class Tree {
ArrayList<String[]> storing;
public Tree() throws Exception {
File file = new File("C:/Users/joaki/Desktop/burma14.tsp");
Scanner sc = new Scanner(file);
storing = new ArrayList<String[]>();
String nextValue = null;
while (sc.hasNextLine()) {
String line = sc.nextLine();
if("NODE_COORD_SECTION".equals(line)){
while (sc.hasNextLine()) {
nextValue = sc.nextLine();
storing.add(nextValue.trim().split(" "));
}
}
}
sc.close();
}
public static ArrayList<String[]> returnScanner() throws Exception {
Tree tree = new Tree();
return tree.storing;
}
public static void main(String[] args) throws Exception {
ArrayList<String[]> storedValues = returnScanner();
String[] firstLine = storedValues.get(0);
String[] secondLine = storedValues.get(1);
for (int i = 0; i < firstLine.length; i++) {
System.out.println(firstLine[i]);
}
}
}
我的输出:
1
565.0
575.0
TA贡献1775条经验 获得超11个赞
使用扫描仪移动到下一行,直到遇到短语“NODE_COORD_SECTION”。然后接下来的几行是你的数据线。它们都符合格式,因此您可以使用 split 来获取第二个和第三个元素。
当您到达标有“EOF”的行时,停止读取和存储在您的数组中。
你有多关心 TSP 文件的标题?如果要存储此信息并根据文件中的数据检查它是否正确,而不是仅运行到“NODE_COORD_SECTION”行,则需要查找行:“DIMENSION”并将值存储为 int。然后根据您的 ArrayList“存储”中的最终总数检查此值
添加回答
举报