2012-04-27 1 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 обновлено выше – AkshaiShah

+1

Если это домашняя работа, пожалуйста, пометьте ее как таковой –

ответ

2

Он должен использовать рекурсию

Вот рекурсивное решение:

  1. прочитать одну строку из файла;
  2. рекурсивно реверсирует оставшуюся часть файла;
  3. выписывать линию чтения в шаге 1.

Поскольку это домашнее задание, я оставляю вам, чтобы выяснить, как перевести это в реальный код Java.

+0

Он должен использовать рекурсию :) – AkshaiShah

+0

Спасибо, я думаю, что у меня есть правильная идея .. просто не уверен, как рекурсивно читать хвост. Это код, который у меня есть: 'String headLine = input.readLine(); Строка currentLine; если (headLine! = Null) { Обратный (вход, выход); \t output.println (currentLine); } // если output.println (headLine); ' – AkshaiShah

+0

@ akshai5050: У вас есть правильная идея. Я не уверен, что понимаю, в чем именно вы испытываете трудности. – NPE

0

Обязательно прочитайте все в LinkedList, а затем выбросите на него рекурсию. Только Collection Framework - очень громоздкий матч для такого рода работ.

1

Вместо того, чтобы дать вам решение, вы, вероятно, не хотите думать об этом с точки зрения головы и хвоста. Подумайте об этом в терминах строк, а затем прочитайте ответы и обсуждения до this SO question. Вы можете применить ту же технику.