首页 > 解决方案 > 如何在我的代码 java 中计算文件中每个段落的单词数?

问题描述

你能帮我在这段代码中添加一个额外的检查,以帮助我找到每个段落的单词数吗?

在此处输入代码

字符串路径 = "C:/CT_AQA - 复制/src/main/resources/file.txt";

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));

String line = " ";
int countWord = 0;
int sentenceCount = 0;
int characterCount = 0;
int paragraphCount = 1;
int countNotLetter = 0;
int letterCount = 0;
int wordInParagraph = 0;

while ((line = br.readLine()) != null) {
    if (line.equals("")) {
       paragraphCount++;
    } else {
        characterCount += line.length();
        String[] wordList = line.split("\\s+");
        countWord += wordList.length;
        String[] sentenceList = line.split("[!?.:]+");
        sentenceCount += sentenceList.length;
        String[] letterList = line.split("[^a-zA-Z]+");
        countNotLetter += letterList.length;
    }

    letterCount = characterCount - countNotLetter;
}
br.close();
System.out.println("The amount of words are " + countWord);
System.out.println("The amount of sentences are " + sentenceCount);
System.out.println("The amount of paragraphs are " + paragraphCount);
System.out.println("The amount of letters are " + letterCount);

} 爪哇

标签: java

解决方案


段落中的总字数应wordCount与所有行的总字数相同。

如果必须计算每段的单词数,那么wordsInParagraph应该是List<Integer> wordsPerParagraph可以这样计算的整数列表:

int wordInParagraph = 0;
List<Integer> wordsPerParagraph = new ArrayList<>();

while ((line = br.readLine()) != null) {
    if (line.equals("")) {
       paragraphCount++;
       wordsPerParagraph.add(wordInParagraph);
       wordInParagraph = 0;
    } else {
        characterCount += line.length();
        String[] wordList = line.split("\\s+");
        countWord += wordList.length;
        wordInParagraph += wordList.length; // !!!

        String[] sentenceList = line.split("[!?.:]+");
        sentenceCount += sentenceList.length;
        String[] letterList = line.split("[^a-zA-Z]+");
        countNotLetter += letterList.length;
    }

    letterCount = characterCount - countNotLetter;
}
// in case the last paragraph does not have trailing empty line
if (wordInParagraph != 0) {
   wordsPerParagraph.add(wordInParagraph);
}

推荐阅读