编写一个Java程序,递归地从一个文件中读取10个名称,然后以相反的顺序输出名称中的字符总数、名称列表和名称列表。所有循环都必须递归执行。 杰伊·沃克 埃洛·弗林斯顿 C.埃罗尔·马德雷 比利朝圣者 米基天使 JoséFrancisco de San Martín 方形海绵裤 米莎·泰诺夫 切斯特峰 意大利半岛 本·多佛 Pat待决
我完全迷路了。我想听听从哪里开始的建议。考虑到这个程序,我想要构建一个主程序,它可以调用一个扫描程序,它可以先读取文件。当读取文件时,它会计数文本中的字符(快速提问,扫描器会计数字符之间的空格吗?)
接下来,我只想使用一个简单的打印函数来显示整个names.txt文件。
最后,我是110%的lost...how的一部分我会用什么?递归是如何适应这一切的?
发布于 2012-10-23 08:10:25
递归部分的伪码:
function printLines(lines):
if lines not empty:
print first line from lines // this prints lines in order
call printLines(remaining lines)
print first line again // this prints lines in reverse order["line1", "line2", "line3"]行的示例输出
line1 // 1st output for printLines(["line1", "line2", "line3"])
line2 // 1st output for printLines(["line2", "line3"])
line3 // 1st output for printLines(["line3"])
// no output for printLines([])
line3 // 2nd output for printLines(["line3"])
line2 // 2nd output for printLines(["line2", "line3"])
line1 // 2nd output for printines(["line1", "line2", "line3"])发布于 2012-10-23 08:13:09
就像这样:
Reader(Stream strm)
{
string line;
if(!strm.eof())
{
line = strm.ReadLine();
Reader(strm);
}
// Info - char counte etc
string parseResult = Parse(line);
Print(parseResult);
}递归将在文件末尾停止,并开始展开。最后一条信息将首先打印出来。
发布于 2012-10-23 08:10:00
您可以使用scanner.nextLine()读取文件。它会读一整行包括空格。
关于如何使用递归向后打印字符串,请将其想象为一种包含两侧房屋的方法。你想向后看房子(尽管你进入了前进的道路)。所以你决定一直走到路的尽头,然后一步一步地后退,打印邻居的房子名字。
function print( i )
if i == wayEnd
return
print(i + 1) // go ahead
// after you return, print:
output house at i添加
那么,方法守则应该是:
private static Scanner scanner;
private static void readFile() {
if (!scanner.hasNext()) return;
String line = scanner.nextLine();
readFile();
System.out.println(line);
}您只需从main调用readFile():
public static void main(String[] args) {
scanner = new Scanner(new File("myText.txt"));
readFile();
}https://stackoverflow.com/questions/13025921
复制相似问题