2016-11-14 29 views
1

このプログラムは「hello my name is bob」という入力を受け取り、それを後方に吐き出します。私は、プログラムがテキストファイルを読み込んでテキストファイルを後方に吐き出すのを助けることが本当に必要です。前もって感謝します!再帰とテキストファイルに関する問題

public class Recursion 
{ 
public static void main(String[] args) throws FileNotFoundException { 
System.out.println(printBackwards("hello my name is bob")); 
} 



public static String printBackwards(String s){ 
if(s.length() <= 1) 
     return s; 
    else 
     return printBackwards(s.substring(1,s.length()))+s.charAt(0); 
    } 
} 
+0

を、私は、これは宿題で想像が、これは(再帰を使用していない)1行のソリューションは、「INPUT.TXT」を読み取る: 'のSystem.out.println(新しいStringBuilderのは、(新スキャナ(新しいファイル( "input.txt"))。useDelimiter( "\\ Z ").next())。reverse());' –

+1

[Javaで文字列を再帰的に逆転させる最良の方法は?](http://stackoverflow.com/questions/859562/whats-the-best)の可能な複製-way-to-recursively-reverse-a-string-in-java) – Hypino

+0

@Hypino OPによって投稿されたコードを見れば、彼はすでに "reverse string metod"を実装しているはずです。 /ファイルから入出力を書き込む。 – user6904265

答えて

-1

これは期待どおりに動作します。

public static void main(String[] args){ 
     Scanner in = null; 
     PrintWriter writer = null; 
     try{ 
      in = new Scanner(new FileReader("filename_in.txt")); 
      writer = new PrintWriter("filename_out.txt"); 
      writer.println(printBackwards(in.nextLine())); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally { 
      in.close(); 
      writer.close(); 
     } 
    } 
+0

@downvoter ..私はあなたになぜdownvoteでしたかと聞くことができますか?ありがとう! – user6904265

-1

使用このコードは、テキストから逆転したい文字列を取得するために:私は、そうでない場合は、あなたが(私はあなたが練習としてこれを行うには聞かせて)ループに持って、filename_in.txtであなただけの1行を持っていることを前提としファイル:

try{ 
    String myString; 
    BufferedReader input = new BufferedReader(new FileReader("Filepath.txt"); 
    while((myString = input.readLine()) != null){} 
} 
catch(FileNotFoundException ex){ 
    //Error Handler Here 
} 
catch(IOException ex){ 
    //Error Handler Here 
} finally { 
    try{ 
     if(br != null) br.close(); 
    } 
    catch(IOException ex){ 
     ex.printStackTrace(); 
    } 
} 

は、インポートすることを忘れないでください:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.FileNotFoundException 
0

質問のコメントに基づいて、これはINPUT.TXTというファイルを読み取り、出力と呼ばれる新しいファイルに保存します。 tあなたの方法を使ってStringを逆転させてください。

input.txt内のすべての行が最初にListに追加されます。

Listは最後の要素から逆方向に反復され、各反復で反転されてStringがoutput.txtに書き込まれます。

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.ListIterator; 
import java.util.Scanner; 

public class Example { 

    public static void main(String[] args) throws IOException {  
     try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) { 
      Scanner scanner = new Scanner(new File("input.txt")); 
      List<String> fileContents = new ArrayList<>(); 
      while (scanner.hasNextLine()) { 
       fileContents.add(scanner.nextLine()); 
      } 
      ListIterator<String> it = fileContents.listIterator(fileContents.size()); 
      while (it.hasPrevious()) { 
       writer.write(printBackwards(it.previous())); 
       writer.newLine(); 
      } 
     } 
    } 

    public static String printBackwards(String s) { 
     if (s.length() <= 1) { 
      return s; 
     } else { 
      return printBackwards(s.substring(1, s.length())) + s.charAt(0); 
     } 
    } 
} 

あなただけの標準出力に表示したいただし場合は、次のようにそれを調整することができます。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.ListIterator; 
import java.util.Scanner; 

public class Example { 

    public static void main(String[] args) throws FileNotFoundException { 
     Scanner scanner = new Scanner(new File("input.txt")); 
     List<String> fileContents = new ArrayList<>(); 
     while (scanner.hasNextLine()) { 
      fileContents.add(scanner.nextLine()); 
     } 
     ListIterator<String> it = fileContents.listIterator(fileContents.size()); 
     while (it.hasPrevious()) { 
      System.out.println(printBackwards(it.previous())); 
     } 
    } 

    public static String printBackwards(String s) { 
     if (s.length() <= 1) { 
      return s; 
     } else { 
      return printBackwards(s.substring(1, s.length())) + s.charAt(0); 
     } 
    } 
} 

または私は以前の私のコメントで述べたように、あなただけの全体を読むことができますそれを一度にファイルおよびリバース:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class Example { 

    public static void main(String[] args) throws FileNotFoundException { 
     System.out.println(printBackwards(new Scanner(new File("file.txt")).useDelimiter("\\Z").next())); 
    } 

    public static String printBackwards(String s) { 
     if (s.length() <= 1) { 
      return s; 
     } else { 
      return printBackwards(s.substring(1, s.length())) + s.charAt(0); 
     } 
    } 
}