2012-04-27 7 views
2

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

したがって、たとえば、私は次を含むファイルを持っている:

 
Hi 
My 
Name 
Is 
Mark 

私は別のファイルに逆の順序で出力することを希望:

 
Mark 
Is 
Name 
My 
Hi 

私は、再帰的に作成していると思いますメソッドは正しくコンパイルされますが、プログラムの実行後は出力ファイルが空です。

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 
+0

正確に尋ねていることを理解できるように例を挙げてください。 :) –

+0

@Vakimshaar above above – AkshaiShah

+1

宿題の場合は –

答えて

2

それはここでは、再帰

を使用する必要があります再帰的なソリューションです:ファイルから1行を読ん

  1. ファイルの残りの部分を再帰的に逆にします。
  2. これは宿題ですのでステップ1

に読んラインを書き出す、私は実際のJavaコードにこれを翻訳する方法を見つけ出すためにあなたにそれを残します。

+0

それは再帰を使用している必要があります:) – AkshaiShah

+0

ありがとう、私は正しいアイデアを持っていると思う..ちょうど尾行を再帰的に読む方法を確信しています。これは私が持っているコードです: 'String headLine = input.readLine(); 文字列currentLine; if(headLine!= null) { リバース(入力、出力); \t output.println(currentLine); } // output.println(headLine); ' – AkshaiShah

+0

@ akshai5050:あなたは正しい考えを持っています。私はそれがあなたが困難を抱えていることを正確に理解しているか分からない。 – NPE

0

すべてを読んで、LinkedListにすべてを読み込んだ後、再帰をスローします。コレクションフレームワークは、この種の作業には非常に面倒なマッチです。

1

解決策を完全に提供するのではなく、おそらく頭と尾の面で考える必要はありません。それを線の形で考えると、回答とディスカッションをthis SO questionに読んでください。同じテクニックを適用することができます。