【发布时间】:2016-07-16 10:41:29
【问题描述】:
我正在开发一个使用 Dijkstra 算法并将结果记录到文本文件的程序。我写入文件的代码如下所示:
try (PrintWriter pr = new PrintWriter(filename + "Out.txt")) {
pr.println("Adjacency Matrix: " + (endTime - startTime) + " ms ");
pr.println("Min-Heap: ");
pr.println("Fibonnaci Heap:");
pr.println("Dijkstra Adjacency Matrix");
pr.println(g.printPath(END));
}
} catch (Exception e) {
}
我对这段代码没有任何问题,除了 g.printPath(END) 行。我收到的错误是“此处不允许使用 void 类型”。我完全理解这意味着什么。这是因为 printPath 方法无效。它看起来像这样:
public void printPath(String end) {
if (!graph.containsKey(end)) {
System.err.printf("End vertex is not contained within graph \"%s\"\n", end);
return;
}
graph.get(end).printPath();
System.out.println();
}
由于我需要访问将要打印的变量,因此我尝试将其修改为具有可以写入文本文件的返回类型。我想出的是这样的:
public String printPath(String end) {
if (!graph.containsKey(end)) {
System.err.printf("End vertex is not contained within graph \"%s\"\n", end);
return null;
}
graph.get(end).printPath();
System.out.println();
return graph.get(end).printPath();
}
这同样有错误,因为方法是字符串类型但 graph.get(end).printPath() 是无效的(get 方法也是无效的)。我尝试返回其他变量,例如 graph 和 graph.get(end) 但它们不返回图中的实际变量。我知道 graph.get(end).printPath() 打印出我想要的正确值。我只是在努力寻找一种方法来存储它们。有没有一种简单的方法可以将它写入我忽略的文本文件,而无需返回并编辑我的所有方法以使它们不失效?谢谢!
【问题讨论】:
-
graph.get(end) 的返回实例是什么?
-
get() 是 Map.java 中的一个方法,而 graph.get(end) 不打印任何值,我相信该方法只是从头到尾获取路径中的值节点。
标签: java return void printwriter