我有一个实现优先队列的Java类。然后我有一个测试类,生成了这样一个图形:
这张图被保存在一个名为“queue”的文件中。现在我希望使用Graphviz将这张图显示为PNG格式的图片。因此,在您创建并填充了优先队列之后,我的测试文件的最后一次调用是:
好的。toString方法如下:
为什么生成不了.png格式的图片?我做错了什么吗?当然,我已经安装了Graphviz。谢谢。
digraph G {
Milan (0.0) -> Turin (1.2)
Milan (0.0) -> Montreal (7.0)
Turin (1.2) -> Paris (5.8)
Turin (1.2) -> Tokyo (2.2)
}
这张图被保存在一个名为“queue”的文件中。现在我希望使用Graphviz将这张图显示为PNG格式的图片。因此,在您创建并填充了优先队列之后,我的测试文件的最后一次调用是:
queue.toString("queue");
好的。toString方法如下:
toString方法的作用是将对象转换为字符串形式。
public void toString(String fileDot){
try {
FileOutputStream file = new FileOutputStream(fileDot);
PrintStream Output = new PrintStream(file);
Output.print(this.printQueue());
Output.close();
File f = new File(fileDot);
String arg1 = f.getAbsolutePath();
String arg2 = arg1 + ".png";
String[] c = {"dot", "-Tpng", arg1, "-o", arg2};
Process p = Runtime.getRuntime().exec(c);
int err = p.waitFor();
}
catch(IOException e1) {
System.out.println(e1);
}
catch(InterruptedException e2) {
System.out.println(e2);
}
}
private String printQueue() throws IOException {
String g = new String("");
char c = '"';
g = g.concat("digraph G {\n");
if(isEmpty())
g = g.concat(" " + "Empty priority queue.");
else {
for(int i = 0; i < lastIndex; i++) {
if(heap[2 * i] != null) {
g = g.concat("" + heap[i].elem + " (" + heap[i].prior + ") " + " " + " -> " + " " + "" + heap[i * 2].elem + " (" + heap[i * 2].prior + ") \n" );
if(heap[2 * i + 1] != null)
g = g.concat("" + heap[i].elem + " (" + heap[i].prior + ") " + " " + " -> " + " " + "" + heap[i * 2 + 1].elem + " (" + heap[i * 2 + 1].prior + ") \n" );
}
} //end for
} //end else
g = g.concat("}");
return g;
}
为什么生成不了.png格式的图片?我做错了什么吗?当然,我已经安装了Graphviz。谢谢。