如题:
统计某个文本文件当中出现单词个数,以及每一种单词出现的频率占所有单词总数的比例。还要拿到前五个频率最高的单词,求出它们的数量之和 占所有单词总数的比
今天下午两点左右要用的,还请尽快!感激不尽!
![](https://profile-avatar.csdnimg.cn/d285aaf7c61f42e687d83a6279c5cc31_weixin_64280715.jpg!4)
统计某个文本文件当中出现单词个数,以及每一种单词出现的频率占所有单词总数的比例。还要拿到前五个频率最高的单词,求出它们的数量之和 占所有单词总数的比
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
代码如下:
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.*; public class ReadTest { public static void main(String[] args) { //逐行读文件 BufferedReader br = null; try { Map<String,Integer> map = new HashMap<String,Integer>(); // 读取文件 br = new BufferedReader(new FileReader("/home/c3736/IdeaProjects/Helloword/src/com/tinno/test1/words.txt")); String line; int total = 0; while(null != (line = br.readLine())){ System.out.println(line); //将字符串用空格分隔 String[]ss = line.split("\\s+"); for(String s : ss){ // 计算单词总数 total ++; if(map.containsKey(s)){ map.put(s, map.get(s)+1); }else{ map.put(s, 1); } } } List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() { //对map value值降序排序 public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { int compare = (o1.getValue()).compareTo(o2.getValue()); return -compare; } }); System.out.println("单词总数为:" + total); int i = 5; int f_total = 0; for(Map.Entry<String,Integer> mapping:list){ String key = mapping.getKey(); Integer value = mapping.getValue(); if(i>0){ f_total += value; i--; } double x = (double)value/ total; // 计算占比 System.out.println("单词 "+ key+"\t数量为:"+value+"\t\t占比为:" + x*100+ "%"); } double y = (double) f_total/total; System.out.println("前五的单词数量和为:"+ f_total+"\t比例为:" + y*100+"%"); }catch(FileNotFoundException e) { e.printStackTrace(); }catch(IOException e) { e.printStackTrace(); }finally { if(null != br){ try { br.close(); }catch(IOException e) { e.printStackTrace(); } } } } }
文件内容:
运行结果:
如有帮助,请点采纳
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 前端和后端代码都没报错,但是点登录没反应的?
- ¥100 需要远程解决QSQLITE问题!
- ¥15 代码问题,应该怎样去修改完善。求解答,
- ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
- ¥15 gozero求手把手教学,400一天
- ¥15 泥浆冲清水的泥浆分布
- ¥15 LASSO回归分析筛选关键基因,适合多大样本量?
- ¥88 error: [polling_error] {"code":"ETELEGRAM","message":"ETELEGRAM: 502 Bad Gateway"}错误
- ¥15 刚毕业,刚通过一家PLC工程师,请问一下待遇还算可以吗?
- ¥15 公司内网,想基本不写代码挂一些视频,有一个还不错的前端展示,有什么软件或者框架可以用吗?尽量简单