• 个人项目--词频统计


    需求概要

    原需求

    1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符。

    2.统计英文单词在本文件的出现次数

    3.将统计结果排序

    4.显示排序结果

    新需求:

    1.小文件输入. 为表明程序能跑

    2.支持命令行输入英文作品的文件名

    3. 支持命令行输入存储有英文作品文件的目录名,批量统计。

    4. 从控制台读入英文单篇作品

    程序输入:

    1.控制台输入文本

    2.英文文本文件

    3.英文目录,目录下包含单个或多个英文文本文件

    程序输出:

    1.英文单词在本文件或控制台输入中的出现的次数,按出现次数排序

    2.文本或控制台输入文字的单词数

    输出位置:

    控制台或指定文件

    代码实现

    代码有两个分支,1、选择输入文本路径或,2、选择直接输入文章

     1 public static void main(String[] args) {
     2         HashMap<String,Integer> map=new HashMap<String,Integer>();//用于统计各个单词的个数,排序
     3         //过滤字符串中的所有标点符号
     4         String regex=" ?.!:,""'';
    ";
     5         BufferedReader br;
     6         try {
     7             //FileReader类创建了一个可以读取文件内容的Reader类、调用构造方法FileReader()
     8             Scanner scan = new Scanner(System.in);
     9             System.out.println("请输入您的输入格式");
    10             System.out.println("1、文件完整路径");
    11             System.out.println("2、文章内容");
    12             int flag = scan.nextInt(); 
    13             

    小文件输入键盘在控制台下输入命令。在控制台输入文本路径即可进行词频统计。

     1 System.out.println("请输入文件完整路径");
     2  2                     String fileUrl = scan.next();
     3  3                     br = new BufferedReader(new FileReader(fileUrl));//文件完整路径
     4  4                     String sentence;
     5  5                     int wordCount = 0;
     6  6                     try {
     7  7                         while((sentence = br.readLine()) !=null){     //用readLine读取文件,判断读取文件是否为空
     8  8                             sentence = sentence.replaceAll(regex, "");
     9  9                             StringTokenizer token=new StringTokenizer(sentence);
    10 10                             while(token.hasMoreTokens()){     //循环遍历
    11 11                                 wordCount++;    
    12 12                                 String word = token.nextToken();
    13 13                                 if(map.containsKey(word)){     //HashMap不允许重复的key,所以利用这个特性,去统计单词的个数
    14 14                                 int count=map.get(word);
    15 15                                 map.put(word, count+1);     //如果HashMap已有这个单词,则设置它的数量加1
    16 16                             }
    17 17                             else{
    18 18                                 map.put(word, 1);          //如果没有这个单词,则新填入,数量为1
    19 19                         }
    20 20                     }
    21 21                 }
    22 22                         System.out.println("总共单词数:"+wordCount);
    23 23                         sort(map); 
    24 24                     } catch (IOException e) {
    25 25                         e.printStackTrace();
    26 26                     }
    27 27                     break;

    运行结果:

     1 请输入文件完整路径
     2 c://english.txt
     3 总共单词数:181
     4 as:7
     5 the:7
     6 not:6
     7 it:6
     8 to:5
     9 are:4
    10 a:4
    11 your:4
    12 in:4
    13 they:3
    14 live:3
    15 and:3
    16 of:2
    17 do:2
    18 may:2
    19 by:2
    20 be:2
    21 clothes:2
    22 that:2
    23 often:2
    24 have:2
    25 from:2
    26 above:2
    27 is:2
    28 you:2
    29 door:1
    psp          
        9月26日      
    类型 内容 开始时间 结束时间 被打断时间 净时间
    查找资料 学习单元测试 9:00 9:48 8 40
    测试代码 学习代码测试 15:00 16:08 8 60
    修改代码 词频修改 9:08 10:09 11 50
    写博客 词频相关 22:30 23:15 5

    40

          

     ssh://git@git.coding.net:linliaimeli/FileWord.git

     https://git.coding.net/linliaimeli/FileWord.git

  • 相关阅读:
    如何优雅地用MATLAB生成C语言从1打印到100再打印到1
    CentOS启动报错Failed to mount /sysroot解决方法
    JVM性能监控与调优篇
    Redis 配置文件详解(翻译版,不全,有时间继续更新)
    odoo五种Action详解
    odoo环境变量env(Environment)
    odooenvmodel
    odoo常用的函数
    HashMap简单实现
    xshell6提示“要继续使用此程序,您必须应用最新的更新或使用新版本”解决办法
  • 原文地址:https://www.cnblogs.com/linliaimeili/p/5918350.html
Copyright © 2020-2023  润新知