2011-04-16 111 views
0

我有一個循環枚舉序列的所有可能的組合。我正在使用for循環,並在控制檯中獲得正確的結果,但輸出的文本文件不一致。PrintWriter with for循環

import java.io.*; 
import java.io.PrintWriter; 

public class WriteFile { 
    public static void main (String args[]) throws FileNotFoundException { 
     brute("12345", 5, new StringBuffer()); 
    } 
    static void brute(String input, int depth, StringBuffer output) throws FileNotFoundException { 



    PrintWriter pw = 
       new PrintWriter("/Users/evanlivingston/test.txt"); 
      if (depth == 0) { 
       System.out.println(output); 

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

      } 
     } 
    } 

我不確定發生了什麼問題。

回答

1

每次創建新的PrintWriter時,它都會從頭開始寫入文件。嘗試在構建後寫入文件output

static void brute(String input, int depth, StringBuffer output) throws FileNotFoundException { 

      if (depth == 0) { 
       System.out.println(output); 

       PrintWriter pw = 
          new PrintWriter("/Users/evanlivingston/test.txt"); 
       pw.println(output); 
       pw.flush(); 
       pw.close(); 

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

      } 
     }