我在 netbeans 中编写了一个程序,但无法在 .txt 文件中打印它。 事实上,我的编程代码确实可以正常工作。 我认为问题出在最后几行代码中。 这是我的代码:
<小时/>import java.io.*;
import java.util.*;
public class converttopathbased_bfs
{
static String START;
static String END;
static int numberOfNodes;
static int numberOfArcs;
static int numberOfCommodities;
static int OriginDestinationOfCommodities[][] = new int[numberOfCommodities][2];
static int neighborhoods[][] = new int[numberOfNodes][numberOfNodes];
static int variableCosts[][] = new int[numberOfNodes][numberOfNodes];
static int capacities[][] = new int[numberOfNodes][numberOfNodes];
static int fixedCosts[][] = new int[numberOfNodes][numberOfNodes];
static int demandOfCommodities[] = new int[numberOfCommodities];
java.io.File file = new java.io.File("pathBasedTest.txt");
java.io.PrintWriter output;
public static void main(String[] args) throws Exception
{
java.io.File data = new java.io.File("samples//test.txt");
Scanner scanner = new Scanner(data);
numberOfNodes = scanner.nextInt();
numberOfArcs = scanner.nextInt();
numberOfCommodities = scanner.nextInt();
Graph graph = new Graph();
for (int i = 0; i < numberOfArcs; i++)
{
int m = scanner.nextInt() - 1;
int n = scanner.nextInt() - 1;
String S = "";
String E = "";
S = Integer.toString(m + 1);
E = Integer.toString(n + 1);
scanner.nextInt();
scanner.nextInt();
scanner.nextInt();
graph.addEdge(S, E);
scanner.nextInt();
scanner.nextInt();
}
for (int i = 0; i < numberOfCommodities; i++)
{
converttopathbased_bfs.START = scanner.next();
converttopathbased_bfs.END = scanner.next();
scanner.nextInt();
LinkedList<String> visited = new LinkedList();
visited.add(START);
new converttopathbased_bfs().breadthFirst(graph, visited);
}
}
private void breadthFirst(Graph graph, LinkedList<String> visited) throws Exception
{
output = new java.io.PrintWriter (file) ;
LinkedList<String> nodes = graph.adjacentNodes(visited.getLast());
// examine adjacent nodes
for (String node : nodes)
{
if (visited.contains(node))
{
continue;
}
if (node.equals(END))
{
visited.add(node);
printPath(visited);
visited.removeLast();
break;
}
}
// in breadth-first, recursion needs to come after visiting adjacent nodes
for (String node : nodes)
{
if (visited.contains(node) || node.equals(END))
{
continue;
}
visited.addLast(node);
breadthFirst(graph, visited);
visited.removeLast();
}
}
private void printPath(LinkedList<String> visited)
{
for (String node : visited)
{
output.printf("s", node);
output.printf(" ");
}
output.printf("\n");
}
}
<小时/>
最佳答案
主要问题是每次调用 breadhtfirst
时都会创建output
。您应该只在代码开头创建它一次,然后在代码末尾关闭它。
您可能需要最后几行:
for (String node : visited)
{
output.printf("%s ", node);
}
output.println();
但我们需要更多信息才能确定。
您还需要在代码末尾关闭该文件。
output.close();
关于java - 在java中将输出打印到.txt文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135601/