【问题标题】:How to make Scanner read more than one line? [closed]如何让 Scanner 读取多行? [关闭]
【发布时间】:2014-03-20 02:56:36
【问题描述】:

我有一个文本语料库,我必须对其进行阅读、拆分、排序和执行其他操作。 一开始,当我拆分它时,我看到 Scanner 只读取一行。这是代码:

public class CorpusTest {
    public static void processCorpus(Scanner scanner) throws IOException{
        String line="0";
        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
        }

        String[] w = line.replaceAll("[^a-zA-Z\\s]","").toLowerCase().split(" ");
        for (int i = 0; i < w.length; i++) {
            w[i].trim();
            }
        System.out.println("Word" + "\t" + "Frequency");
        System.out.println(Arrays.toString(w));

        }


    public static void main(String [] args) throws IOException{
        File temp = new File("input.txt");
        Scanner scanner = new Scanner(temp);
        CorpusTest.processCorpus(scanner);
        }
    }

我尝试添加:

String text = new Scanner( new File("input.txt") ).useDelimiter("\\A").next();

但我得到了错误,因为在上面的方法中我正在使用一个数组。

while循环只读取最后一行,不好。

【问题讨论】:

  • 您的代码太碎片化,无法理解您的真正问题是什么。除了建议您“使用调试器”之外,我们无话可说。
  • @StephenC 我更新了我的问题以澄清问题。
  • @user2864740 谢谢,这绝对是相关的,它对我有用。

标签: java java.util.scanner


【解决方案1】:

我不确定您的问题是什么,而且您似乎试图让事情变得比实际需要的更困难。为什么不简单地用扫描器读入你的行,一次一个,将它们放入一个 StringBuilder 中,然后在读入文本后,转换为一个字符串并根据你的心意来操作你的字符串?

【讨论】:

  • 我有太多行要阅读 - 这是一个很大的文本。 (除非我不明白你的意思)
  • @nanachan:然后根据需要读取尽可能多的行。您可以完全控制您的代码以及 Scanner 读取的行数。我强烈怀疑您的问题出在其他地方,这确实是变相的 XY 问题。
  • 那么如果我有 10000 行,我该怎么做呢? while 循环似乎不起作用。
  • @nanachan:那么你需要做一些调试,首先找到问题的根源。同样,我怀疑您遇到了 XY 问题,您真正的问题与您发布的问题无关。
  • 您有什么理由专门使用扫描仪吗?如果您只需要标记文本,为什么不使用字符串标记器?如果您想阅读文本,为什么不使用缓冲阅读器?似乎您正试图使用​​一个变量来做所有事情。
【解决方案2】:

@user2864740 帮助我将我重定向到正确的来源。我在代码开头使用了这个而不是循环:

String content = new Scanner(new File("input.txt")).useDelimiter("\\Z").next();     
        String[] w = content.replaceAll("[^a-zA-Z\\s]","").replaceAll("\n","").toLowerCase().split(" ");

现在可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2017-03-13
    • 2012-12-26
    • 2020-03-17
    • 2012-06-09
    • 1970-01-01
    相关资源
    最近更新 更多