java如何使用scanner来读取和计数段落

问题描述 投票:0回答:2

例如,如果文件中包含以下文本行:

这是一个例子。这是一个例子。

这是一个例子。这是一个例子。这是一个例子

这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例,这是一个示例。

我希望能够将这些行计为3段。现在我的代码会将其计为4段,因为它不知道段落何时开始和结束。

Scanner file = new Scanner(new FileInputStream("../.../output.txt"));
int count = 0;
while (file.hasNextLine()) { //whilst scanner has more lines
    Scanner s = new Scanner(file.nextLine());
    if(!file.hasNext()){
        break;
    }
    else{
        file.nextLine();
        count++;
    }
    s.close();
}
System.out.println("Number of paragraphs: "+ count);
file.close();

这就是我到目前为止所拥有的。它读取文本行,并将每行视为单个段落。

我希望它将它们之间没有任何空行的文本行视为1段并计算文件中的所有段落。

java string paragraph
2个回答
0
投票

您将无法使用扫描仪查看空格或换行符。 nextLine()方法消除了\ n的。

您需要使用一个类和方法来读取文件的字节,以便您可以检测空格和换行符。

尝试使用read()FileInputStream方法。


0
投票

如果您只想计算线数,扫描仪可能不是最佳选择。 BufferedReader可能更好。

    BufferedReader in = new BufferedReader(new FileReader("output.txt"));
    String line = in.readLine();
    int count = 0;
    StringBuilder paragraph = new StringBuilder();
    while (true) {
        if (line==null || line.trim().length() == 0) {
            count++;
            System.out.println("paragraph " + count + ":" + paragraph.toString());
            paragraph.setLength(0);
            if(line == null)
                break;
        } else {
            paragraph.append(" ");
            paragraph.append(line);
        }
        line = in.readLine();
    }
    in.close();
    System.out.println("Number of paragaphs: "+ count);    
© www.soinside.com 2019 - 2024. All rights reserved.