gpt4 book ai didi

java - 递归和文本文件的问题

转载 作者:行者123 更新时间:2023-12-01 06:22:51 27 4
gpt4 key购买 nike

该程序接受输入“你好,我的名字是鲍勃”并将其向后输出。我真的需要帮助,使程序读取文本文件并向后吐出文本文件。提前致谢!

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);
}
}

最佳答案

根据问题的评论,这将读取一个名为 input.txt 的文件,并使用您的反转 String 的方法将其保存到名为 output.txt 的新文件中。

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);
}
}
}

关于java - 递归和文本文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40599666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com