第一个Java程序(将排列写入文件)

第一个Java程序(将排列写入文件),java,permutation,combinations,Java,Permutation,Combinations,我试图在文本文件中重复编写组合,问题是我试图在不了解java内部工作原理的情况下将一些代码拼凑在一起。当我重新排列代码时,我真的不确定我在影响什么 import java.io.*; public class Main { public static void main(String args[]) { brute("123", 3, new StringBuffer()); } static void brut

我试图在文本文件中重复编写组合,问题是我试图在不了解java内部工作原理的情况下将一些代码拼凑在一起。当我重新排列代码时,我真的不确定我在影响什么

 import java.io.*;

    public class Main {
        public static void main(String args[]) {
            brute("123", 3, new StringBuffer());
        }
        static void brute(String input, int depth, StringBuffer output) {
            if (depth == 0) {
               // System.out.println(output);
                 {
                     try{
                   // Create file 
                   FileWriter fstream = new FileWriter("out.txt",true);
                       BufferedWriter out = new BufferedWriter(fstream);
                   out.write("blah" + output);}

         else {
            for (int i = 0; i < input.length(); i++) {
                output.append(input.charAt(i));
                brute(input, depth - 1, output);
                output.deleteCharAt(output.length() - 1); 
         }
       }

    }
    }

}
import java.io.*;
公共班机{
公共静态void main(字符串参数[]){
蛮(“123”,3,新的StringBuffer());
}
静态void暴力(字符串输入、int深度、StringBuffer输出){
如果(深度==0){
//系统输出打印项次(输出);
{
试一试{
//创建文件
FileWriter fstream=新的FileWriter(“out.txt”,true);
BufferedWriter out=新的BufferedWriter(fstream);
out.write(“blah”+输出);}
否则{
对于(int i=0;i

非常感谢您的帮助

我想问题是,您在运行应用程序结束时会得到一个空文件

您应该简化写出代码的位:

FileWriter fstream = new FileWriter("out.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write("blah" + output);
您每次都要打开一个文件并将其写入。这没关系(最好将其写入已打开的流),但您不需要创建
BufferedWriter
,您可以进一步简化代码

FileWriter fstream = new FileWriter("out.txt", true);
fstream.append(output);
如果运行此代码,您仍然会发现它不起作用,只会在磁盘上生成一个空文件。使用后关闭此代码非常重要。将上述更改为:

FileWriter fstream = new FileWriter("out.txt", true);
fstream.append(output).append('\n');
fstream.close();
似乎使程序正常工作(代码中有一些语法错误,例如忘记捕获/抛出已检查的异常,但我认为这只是因为代码是手动复制的)

关于如何进一步整理的建议:

  • 写入流,而不是每次写入项时打开和关闭文件
  • 最后使用
    确保您的文件始终处于关闭状态,即使在发生异常的情况下也是如此

您是否可以通过编辑您的帖子来帮助我们,使所有代码看起来都像代码?谢谢!您应该首先了解代码的作用,而不是疯狂地猜测和复制它。这将导致您进入一个漫长的黑暗隧道!如果您不了解它在做什么,请从头开始,自己编写它。