Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java如何使用扫描器读取和计数段落_Java_String_Paragraph - Fatal编程技术网

java如何使用扫描器读取和计数段落

java如何使用扫描器读取和计数段落,java,string,paragraph,Java,String,Paragraph,例如,如果文件中有以下几行文本: 这是一个例子。这是一个例子 这是一个例子。这是一个例子。这是一个例子 这是一个例子这是一个例子这是一个例子这是一个例子这是一个例子这是一个例子这是一个例子这是一个例子这是一个例子这是一个例子 我希望能够将这些行计算为3段。现在我的代码将把它计算为4个段落,因为它不知道段落的开始和结束时间 Scanner file = new Scanner(new FileInputStream("../.../output.txt")); int count = 0; whi

例如,如果文件中有以下几行文本:

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

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

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

我希望能够将这些行计算为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();
这就是我目前所拥有的。它读取一行行文本,并将每行视为一个段落


我希望它将没有任何空行的文本行视为一个段落,并计算文件中的所有段落。

如果您只想计算行数,扫描仪可能不是最佳选择。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);    

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

您需要使用读取文件字节的类和方法,以便能够检测空格和换行符


尝试使用
FileInputStream

read()
方法是否为静态格式的文件?您能检查一下制表符、“\t”或空行吗?到目前为止您都做了哪些尝试?展示一些自己寻找解决方案的工作和/或研究,然后就自己无法解决的具体问题寻求帮助。不清楚自己想要什么。你想数一数段落中的字数吗?如果是这样,您如何定义段落的开头和结尾?这将给你关于你将如何着手做这件事的线索。提示,如果要计算所需的单词数,Scanner.next()将为您拾取下一个单词。是的,我基本上要计算包含特定单词的段落中的单词数,但在此之前,我要定义段落的开头和结尾,即如果一行或多行文本后有空格,这意味着这是该段的结尾。我的代码将每一行作为一个段落读取。我已经努力这么做了一段时间了,但它可以毫无问题地计算出每一行。我只是希望系统能够知道段落是什么,也就是说,如果一行或多行文本后有空格,则是该段落的结尾。它把每一行文字都当作一个段落,你是说你想把每一段都当作一个字符串来读吗?如果你不关心计数,那么你应该把它从你的例子(和标题)中删除。如果你想要两者(计数和段落),那么就用我的例子加上一个StringBuilder来附加每一行,直到你看到一个空行。我不知道如何使用字符串生成器,我是java的初学者。我想让系统知道段落的开始和结束时间,然后计算文件中的每个段落。所以,基本上,它应该把一行行的文字读在一起,而不是把它们之间的空行作为一个段落。希望这是清楚的答案(再次)。我还需要阅读循环中的下一行。并非所有答案都是在堆栈溢出上测试的,因此您应该希望对答案进行一些调整。更多地将其用作指南,而不是替代品。