彼岸z 2024-09-18 21:27 采纳率: 100%
浏览 16
已结题

编写一个java程序,将一个文本文件中的所有内容读取出来,并统计文件中每个单词出现的次数。

  1. 读取一个指定的文本文件。
  2. 将文件中的所有单词读取出来,并忽略大小写。
  3. 统计每个单词出现的次数。
  4. 将结果以降序排列(按出现次数从高到低),并输出前5个最常见的单词及其出现次数。
  • 使用 HashMap<String, Integer> 来存储单词和它们的出现次数。
  • 使用 BufferedReader 来读取文件内容。
  • 使用 Collections.sort() 对单词频率进行排序。
  • 写回答

2条回答 默认 最新

  • 小ᶻ☡꙳ᵃⁱᵍᶜ꙳ AIGC领域优质创作者 2024-10-06 12:06
    关注

    回答引用自GPT-4o,由博主小ᶻZ࿆编写,若还有疑问可评论或留言:

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.*;
    
    public class WordFrequencyCounter {
        public static void main(String[] args) {
            // 定义文件路径
            String filePath = "yourfile.txt"; // 请替换为实际文件路径
    
            // 使用 HashMap 来存储单词和它们的出现次数
            HashMap<String, Integer> wordCountMap = new HashMap<>();
    
            // 使用 BufferedReader 来读取文件内容
            try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
                String line;
                while ((line = br.readLine()) != null) {
                    // 按照空格或标点符号来分割单词,并忽略大小写
                    String[] words = line.toLowerCase().split("\\W+");
                    for (String word : words) {
                        if (!word.isEmpty()) {
                            wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1);
                        }
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            // 将结果按出现次数排序
            List<Map.Entry<String, Integer>> sortedList = new ArrayList<>(wordCountMap.entrySet());
            Collections.sort(sortedList, (a, b) -> b.getValue() - a.getValue());
    
            // 输出前5个最常见的单词及其出现次数
            System.out.println("Top 5 most frequent words:");
            for (int i = 0; i < Math.min(5, sortedList.size()); i++) {
                System.out.println(sortedList.get(i).getKey() + ": " + sortedList.get(i).getValue());
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月6日
  • 已采纳回答 10月6日
  • 创建了问题 9月18日