当前位置: 首页 > article >正文

统计英语单词

使用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+"%");
        }

    }
}

http://www.kler.cn/a/150182.html

相关文章:

  • ComfyUI和Photoshop相结合,PS内实现:文生图,图生图,高清放大,局部重绘,面部修复,设计师福音
  • 【双指针】【数之和】 LeetCode 633.平方数之和
  • Vue 全局状态管理:Vuex 从入门到精通
  • 代码随想录第十五天| 110.平衡二叉树 、 257. 二叉树的所有路径 、404.左叶子之和、222.完全二叉树的节点个数
  • Python代码解析:生成Jieba自定义词典
  • 大学适合学C语言还是Python?
  • 在Docker上部署Springboot项目
  • 大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具?
  • 为什么预处理对象会提升处理的性能
  • 线性可分SVM摘记
  • java学习part23异常try catch
  • Elasticsearch:ES|QL 函数及操作符
  • HTTP常见响应码
  • 小航助学题库蓝桥杯题库c++选拔赛(22年1月)(含题库教师学生账号)
  • 对话式数据需求激增,景联文科技提供高质量多轮对话数据定制采集标注服务
  • 20. Matplotlib 数据可视化
  • 企业微信http协议接口调用,发送视频号消息
  • 荣耀冲击高端,一边推新「修路」,一边降价「拆桥」
  • 网络相关-面试高频
  • 自动化测试工具——Monkey
  • GANVAEDiffusion
  • Mysql之子查询(知识点+例题)
  • 知识蒸馏相关基础知识
  • Vue3框架中让table合计居中对齐
  • 自定义类型:结构体,枚举,联合
  • A*算法学习