统计英语单词

使用Scanner类和正则表达式统计一篇英文中的单词,要求如下:

1、一共出现了多少个单词。

2、有多少个互不相同的单词。

3、按单词出现的频率大小输出单词。

package 第七次;
import java.util.*;
import java.io.*;
import java.util.regex.*;

public class word {
   
    public static void main(String[] args) {
   

        String inputFile = "src/java线上作业/第三章/crossion.txt";// 读取输入文件

         Map<String,Integer> wordIndex = new HashMap<>();

        //设置set集合来存放已经出现的单词
        Set<String> Words = new HashSet<>();

        //单词计数器
        int count =0;

        //互不相同单词出现的次数
        int uncount =0;
        //定义集合用于存放互不相同的单词
        Map<Integer,String> dict;

        try (BufferedReader reader = new BufferedReader(new FileReader(inputFile))) {
   //new一个BufferedReader对象,将文件内容读取到缓存

            String line;

            while ((line = reader.readLine()) != null) {
   
                //读取无论是大写还是小写的单词
                Pattern pattern = Pattern.compile("[A-Za-z][A-Za-z-]*");//正则表达式,按先大写后小写

                Matcher matcher = pattern.matcher(line);

                while (matcher.find()) {
   

                    String word = matcher.group().toLowerCase();// 将单词转换为小写

                    wordIndex.put(word,wordIndex.getOrDefault(word,0)+1);

                    count++;

                    //输出不相同的单词,
                    if(!Words.contains(word)){
   

                        dict = new HashMap<>();

                        dict.put(count,word);

                        //3、将互不相同的单词以集合的方式输出
                        System.out.println(dict);

                        //将出现过的单词添加到集合中
                        Words.add(word);

                        uncount++;
                    }

                }

            }

            //1、互不相同单词出现的次数
            System.out.print("不相同的单词次数:"+uncount);

            //2、单词出现的数量
            System.out.print("单词出现的数量:"+count);

        }

        catch (IOException e) {
   

            e.printStackTrace();

        }
        //计算不同单词出现的次数
        List<Map.Entry<String, Integer>> sortedWords = new ArrayList<>(wordIndex.entrySet());

        Collections.sort(sortedWords, Map.Entry.<String, Integer>comparingByValue().reversed());

        for (Map.Entry<String, Integer> entry : sortedWords) {
   

                int countvalue = Integer.valueOf(entry.getValue());
                //输出
            System.out.println("单词出现的频率:"+entry.getKey() + ": " + countvalue*0.01+"%");
        }

    }
}

相关推荐

  1. 统计英语单词

    2023-12-06 21:48:05       33 阅读
  2. 英语单词--痛苦

    2023-12-06 21:48:05       19 阅读
  3. 英语单词学习

    2023-12-06 21:48:05       10 阅读
  4. 考研英语单词10

    2023-12-06 21:48:05       27 阅读
  5. 考研英语单词20

    2023-12-06 21:48:05       27 阅读
  6. 单词统计(C语言)

    2023-12-06 21:48:05       37 阅读
  7. 统计单词

    2023-12-06 21:48:05       16 阅读
  8. pyflink统计单词

    2023-12-06 21:48:05       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 21:48:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 21:48:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 21:48:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 21:48:05       20 阅读

热门阅读

  1. [传智杯 #4 初赛] 萝卜数据库

    2023-12-06 21:48:05       35 阅读
  2. AtCoder ABC172

    2023-12-06 21:48:05       37 阅读
  3. docker内容整理

    2023-12-06 21:48:05       40 阅读
  4. 找丢失号码(桶排序)

    2023-12-06 21:48:05       30 阅读
  5. 最近爆火的向量数据库是怎么回事儿?

    2023-12-06 21:48:05       39 阅读
  6. C#无标题栏窗体拖动方法

    2023-12-06 21:48:05       34 阅读
  7. 字节面试题 小于n的最大数

    2023-12-06 21:48:05       36 阅读