на основе комментариев по этому вопросу, это будет читать файл с именем input.txt и сохранить его в новый файл вывода. T xt, используя ваш метод для реверсирования 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);
}
}
}
Я полагаю, что это домашнее задание, но это одна линия решение (не используя рекурсию) Считывает «input.txt»: 'System.out.println (новый StringBuilder (новый Сканер (новый файл ("input.txt")). UseDelimiter ("\\ Z ") .next()). reverse());' –
Возможный дубликат [Что лучше всего рекурсивно изменить строку в Java?] (http://stackoverflow.com/questions/859562/whats-the-best -way-to-recursively-reverse-a-string-in-java) – Hypino
@ Hypino, если вы посмотрите код, отправленный OP, вы должны увидеть, что он уже реализовал «метод обратной строки». Он просто спрашивает, как читать/напишите ввод/вывод из/в файл. – user6904265