繁体   English   中英

如何使用Java计算文件中的每个单词

[英]How do I count each word in a file using Java

我试图用三个实例方法编写一个程序,但我似乎做对了。 我的方法wordCount返回文件中的行数。 不是应该的字数。

我只是在方法mostFrequentWords中迷路了。

希望有人可以帮助我

package opgaver;

import java.util.*;
import java.io.*;

public class TextAnalysis14 {
    Scanner file;
    int CountWords = 0;
    boolean Contains = true;
    String[] words;
    String[] MFwords;

    public TextAnalysis14(String sourceFileName, int maxNoOfWords) {
        String wordline;
        words = new String[maxNoOfWords];
        String[] line;

        try {
            file = new Scanner(new File(sourceFileName));
        } catch (FileNotFoundException e) {
            file = new Scanner("");
        }

        while (file.hasNext()) {
            wordline = file.next();
            line = wordline.split("[^a-zA -Z]+");
            for (int i = 0; i < line.length; i++) {
                if (!line[i].equals(" ")) {
                    words[CountWords] = line[i];
                    CountWords++;
                }
            }
        }
        if (words[CountWords] == (null)) {
            for (int i = CountWords; i < maxNoOfWords; i++) {
                words[i] = ("empty");
            }
        }
    }

    public int wordCount() {
        return CountWords;
    }

    public boolean contains(String word) {
        for (int i = 0; i < words.length; i++) {
            if (words[i].contains(word)) {
                return Contains;
            }
        }
        return false;
    }

    public String[] mostFrequentWords() {
        Arrays.sort(words);
        return MFwords;
    }
}

通过调用wordline = file.next(); 你不是在读书。

TextAnalysis14将条件更改为file.hasNextLine()并使用file.nextLine()读取行

while (file.hasNextLine()) {
    wordline = file.nextLine();
    ....
}

由于我的菜鸟状态,我无法发表评论,但正则表达式中的A和-Z之间似乎有空格。

试试这个。

public static void main(String[] args) {
    String str = "this    is    a space String"; // read all lines in a file
    String[] splited = str.split(" ");
    List<String> list = new ArrayList<String>();
    for(int i = 0;i < splited.length; i++){
        if(splited[i].length() > 0){
            list.add(splited[i]);
        }
    }
    System.out.println(list.size());
}

您可以使用Java 8尝试类似的方法:

Stream<String> lines = Files.lines(Paths.get("c:/", "file.txt"));
in wordCount = lines.mapToInt(s -> s.split(' ').length()).sum();

该功能只是在文件中包含一个单词计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM