2

行を含むファイルをインポートするとします。シーケンスの末尾に続いてシーケンスの先頭を再帰的に出力することで、このファイルを逆にしたいと思います。これは BufferedReader を使用して可能ですか? それとも、最初にこれらの行をリストにインポートする必要がありますか? 私は再帰でそれをしなければなりません。

たとえば、次の内容を含むファイルがあります。

やあ
じぶんの
名前
は
マーク

別のファイルに逆順で出力したい:

マーク
は
名前
じぶんの
やあ

再帰メソッドを正しく作成したと思いますが、コンパイルは正常に行われますが、プログラムの実行後に出力ファイルが空になります。

public void Reverse(BufferedReader br, PrintWriter pw) {
    try {
        String headLine = br.readLine();
        if (headLine != null) {
            Reverse(br, pw);
            pw.println(br.readLine());
        }
        pw.println(headLine);      
    } //try
4

3 に答える 3

2

再帰を使用する必要があります

再帰的な解決策は次のとおりです。

  1. ファイルから 1 行を読み取ります。
  2. ファイルの残りの部分を再帰的に逆にします。
  3. 手順 1 で読み取った行を書き出します。

これは宿題なので、これを実際の Java コードに変換する方法はあなたに任せます。

于 2012-04-27T11:57:44.230 に答える
1

あからさまに解決策を提供する代わりに、これを頭と尻尾の観点から考えたくないでしょう。行の観点から考えてから、この SO questionへの回答と議論を読んでください。同じテクニックを適用できます。

于 2012-04-27T12:04:03.957 に答える
0

必ずすべてを aLinkedListに読み込んでから、再帰をスローしてください。ただ、コレクション フレームワークは、この種の作業には非常に面倒です。

于 2012-04-27T12:01:24.893 に答える