java - 在java中将输出打印到.txt文件的问题

标签 java

我在 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/

相关文章:

java - 我可以像参数一样引用子类吗?

java - 从文件获取整数值到数组

java - 在准备好的语句中重用匿名参数

java - 如何让RecyclerView在每次将项目添加到列表时不滚动到底部

java - Java 中的 C++ 类型定义?

java - EclipseLink:如何避免嵌套左连接的额外 sql 查询

java.util.NoSuchElementException 错误?

java - 需要调整窗口大小才能使程序正常工作

java - Springboot 测试与 commandLineRunner 给出不同的结果

java - 在 Active Directory 中找不到 Azure VM