首页 > 代码库 > 个人项目--词频统计

个人项目--词频统计

需求概要

原需求

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=" ?.!:,\"\"‘‘;\n"; 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已有这个单词,则设置它的数量加116 16                             }17 17                             else{18 18                                 map.put(word, 1);          //如果没有这个单词,则新填入,数量为119 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:410 a:411 your:412 in:413 they:314 live:315 and:316 of:217 do:218 may:219 by:220 be:221 clothes:222 that:223 often:224 have:225 from:226 above:227 is:228 you:229 door:1

 

代码覆盖率就是所写的单元测试所测试到的代码比例。

 

                                                     

 

psp     
  9月26日   
类型内容开始时间结束时间被打断时间 净时间
查找资料学习单元测试9:009:48840
测试代码学习代码测试15:0016:08860
修改代码词频修改9:0810:091150
写博客词频相关22:3023:155

40

      

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

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

个人项目--词频统计