0

シーケンスのすべての可能な組み合わせのループ列挙があります。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();

            }
        }
    }

何が問題なのかわかりません。

4

1 に答える 1

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

            }
        }
于 2011-04-16T02:45:44.787 に答える