首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java读取文本文件并使用递归向后打印

用Java读取文本文件并使用递归向后打印
EN

Stack Overflow用户
提问于 2012-10-23 08:01:24
回答 7查看 5.8K关注 0票数 2

编写一个Java程序,递归地从一个文件中读取10个名称,然后以相反的顺序输出名称中的字符总数、名称列表和名称列表。所有循环都必须递归执行。 杰伊·沃克 埃洛·弗林斯顿 C.埃罗尔·马德雷 比利朝圣者 米基天使 JoséFrancisco de San Martín 方形海绵裤 米莎·泰诺夫 切斯特峰 意大利半岛 本·多佛 Pat待决

我完全迷路了。我想听听从哪里开始的建议。考虑到这个程序,我想要构建一个主程序,它可以调用一个扫描程序,它可以先读取文件。当读取文件时,它会计数文本中的字符(快速提问,扫描器会计数字符之间的空格吗?)

接下来,我只想使用一个简单的打印函数来显示整个names.txt文件。

最后,我是110%的lost...how的一部分我会用什么?递归是如何适应这一切的?

EN

回答 7

Stack Overflow用户

发布于 2012-10-23 08:10:25

递归部分的伪码:

代码语言:javascript
复制
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"]行的示例输出

代码语言:javascript
复制
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"])
票数 3
EN

Stack Overflow用户

发布于 2012-10-23 08:13:09

就像这样:

代码语言:javascript
复制
Reader(Stream strm)
{
    string line;

    if(!strm.eof())
    {
        line = strm.ReadLine();
        Reader(strm);
    }

    // Info - char counte etc
    string parseResult = Parse(line);
    Print(parseResult);
}

递归将在文件末尾停止,并开始展开。最后一条信息将首先打印出来。

票数 3
EN

Stack Overflow用户

发布于 2012-10-23 08:10:00

您可以使用scanner.nextLine()读取文件。它会读一整行包括空格。

关于如何使用递归向后打印字符串,请将其想象为一种包含两侧房屋的方法。你想向后看房子(尽管你进入了前进的道路)。所以你决定一直走到路的尽头,然后一步一步地后退,打印邻居的房子名字。

代码语言:javascript
复制
function print( i )
     if i == wayEnd
        return
     print(i + 1) // go ahead
     // after you return, print:
     output house at i

添加

那么,方法守则应该是:

代码语言:javascript
复制
private static Scanner scanner;
private static void readFile() {
      if (!scanner.hasNext()) return;
      String line = scanner.nextLine();
      readFile();
      System.out.println(line);
}

您只需从main调用readFile()

代码语言:javascript
复制
public static void main(String[] args) {
     scanner = new Scanner(new File("myText.txt"));
     readFile();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13025921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档