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

时间:2011-04-14 22:19:05

标签: java permutation combinations

我正在尝试将重复组合写入文本文件,问题是我试图在不知道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); 
         }
       }

    }
    }

}

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

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

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

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();

似乎使程序工作(代码中存在一些语法错误,例如忘记捕获/抛出已检查的异常,但我认为这只是因为代码是手动复制的。)

有关如何整理此内容的建议:

  • 每次编写项目时都写入流而不是打开和关闭文件
  • 使用finally确保您的文件始终处于关闭状态,即使发生异常
  • 也是如此