package 课堂测试1;public class wordArray {
private int num;
private String word;
public int getNum() {return num;
}
public void setNum(int num) {this.num = num;
}
public String getWord() {return word;
}
public void setWord(String word) {this.word = word;
}};
package 课堂测试1;import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;import java.util.Map;
import java.util.TreeMap;public class Words {public static void main(String[] args) throws Exception {// TODO 自动生成的方法存根/*ArrayList<String> wordRecord = new ArrayList<String>();ArrayList<Integer> wordNum=new ArrayList<Integer>();*/BufferedReader br=new BufferedReader(new FileReader("E:\\student.txt"));StringBuffer sb=new StringBuffer();String text=null;/*while((text=br.read())!=-1) {char c=(char)text;if(c==' '||c=='\n') {}}*/while((text=br.readLine())!=null) {sb.append(text);}br.close();String str=sb.toString();String words[]=str.split("[^(a-zA-z)]+");wordArray wa[]=new wordArray[words.length];//Map<String,Integer>map=new TreeMap<String,Integer>();/*Integer num=m.get(a);m.put(a,(num==null)?1:num+1);*/int num=0;for(int i=0;i<words.length;i++) {int k=0;if(words[i]!=null) {for(int j=i;j<words.length;j++) {if(words[i].equals(words[j])) {wa[num].setWord(words[i]);wa[num].setNum(++k);words[j]=null;}}num++; }   }for(int i=0;i<10;i++) {System.out.println(wa[i].getWord()+wa[i].getNum());}}};

  

package 课堂测试1;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
public class test2 {public static void main(String [] args) throws Exception {BufferedReader br = new BufferedReader(new FileReader("E:\\student.txt"));
/*FileReader用缓冲区读取文本文件。通过查源码得知方法三内部实现时是使用数组形式来缓冲字符数据的BufferedReader提供了按行读取文本文件的方法readLine();readLine()返回行有效数据,不包含换行符,未读取到数据返回nullhttps://blog.csdn.net/sutaotao_s77/article/details/79251364 */StringBuffer sb = new StringBuffer();/*当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象*/String text =null;while ((text=br.readLine())!= null){sb.append(text);// 将读取出的字符追加到stringbuffer中
        }br.close();  // 关闭读入流String str = sb.toString(); // 将stringBuffer转为字符即返回此序列中数据的字符串表示形式String[] words = str.split("[^(a-zA-Z)]+");  // 非单词的字符来分割,得到所有单词split 方法//将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)//String[] words = str.split(" ");Map<String ,Integer> map = new HashMap<String, Integer>() ;for(String word :words){if(map.get(word)==null){  // 若不存在说明是第一次,则加入到map,出现次数为1map.put(word,1);}else{map.put(word,map.get(word)+1);  // 若存在,次数累加1
            }}// 排序List<Map.Entry<String ,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
//在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标Comparator<Map.Entry<String,Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() {public int compare(Map.Entry<String, Integer> left, Map.Entry<String, Integer> right) {return (left.getValue().compareTo(right.getValue()));}};// 集合默认升序升序
        Collections.sort(list,comparator);for(int i=0;i<10;i++){// 由高到低输出System.out.println(list.get(list.size()-i-1).getKey() +":"+list.get(list.size()-i-1).getValue());}}
}

第一篇代码始终调不对,还差对单词的排序以及统计出现的频率没有完成,第二篇代码是从网上改编过来的,运行是成功了,但是由于我对Java的认知还不深,以至于后面关于排序那部分代码搞不清,我弄明白的地方均已做了详细注释。通过这次测试感触挺深的,最大的收获就是我彻底学会了文件的读写操作。问题不少,我不会怎么把这个复杂问题模块化,不知道该怎样去分化这个程序又该如何贯连。比如这篇代码我不知道怎样把那些相同的单词挑出来并同时计算个数。用什么方法,新建类还是ArrayList或者二维数组,又该怎么用,我做题时思路很混乱,几乎不知该如何下手。我觉得自己以后需要加强练习,并且学会逐渐地积累阅读各种类型难度代码,形成自己的一套代码库,这样才能对以后遇到的各种问题不至于手足无措。最后想说的就是代码中的问题我会逐渐改正并完善的。

转载于:https://www.cnblogs.com/zzstdruan1707-4/p/9775817.html

哈利波特英文单词统计频率相关推荐

  1. C语言实现英文单词统计

    前言 发现一个很久以前的数据结构课设(英文单词统计),C语言写的,记录在此,待需要的人 题目 研究人员需要统计某篇英文文章中某些特定单词出现的次数和位置.请写出一个实现这一目标的英文单词统计小程序. ...

  2. python统计英文句子每个单词字数_Python小书3-文本英文单词统计

    之前写Python Web小书第三小节本来用的垃圾邮件的案例三郎:Python贝叶斯推理垃圾邮件分类​zhuanlan.zhihu.com 后来发现里面的东西,涉及到概率,程序太复杂了...哈哈哈 所 ...

  3. Pandas-高级处理(七):透视表(pivot_table)【以指定列作为行索引对另一指定列的值进行分组聚合操作】、交叉表(crosstab)【统计频率】

    交叉表与透视表的作用 交叉表:计算一列数据对于另外一列数据的分组个数 透视表:指定某一列对另一列的关系 一.透视表 透视表是一种可以对数据动态排布并且分类汇总的表格格式. 透视表:透视表是将原有的Da ...

  4. 【ArcGIS自定义脚本工具】栅格统计频率和累计频率

    文章目录 一.功能介绍 二.脚本代码 三.工具参数 四.工具界面 系列文章目录: ArcGIS自定义脚本工具 一.功能介绍 在基于像元二分模型利用植被指数计算植被覆盖度的过程中,通常以某一累计频率值对 ...

  5. 一文揭秘阿里实时计算Blink核心技术:如何做到唯快不破?

    阿里妹导读:本文主要讲解阿里巴巴实时大数据和相关的机器学习技术,以及这些技术如何实现大数据升级,最终取得卓越的双11战果. 分享嘉宾 大沙,阿里巴巴高级技术专家,负责实时计算Flink SQL,之前在 ...

  6. 考研大纲词汇mysql下载_通过R语言统计考研英语(二)单词出现频率

    通过R语言统计考研英语(二)单词出现频率 大家对英语考试并不陌生,首先是背单词,就是所谓的高频词汇.厚厚的一本单词,真的看的头大.最近结合自己刚学的R语言,为年底的考研做准备,想统计一下最近考研英语( ...

  7. 由文章中英文字母出现频率分析破解密文

    原题: 使用频率分析法,尝试破译密文: WB WI KJB MK RMIT BMIQ BJ RASHMWK RMVP YJERYRKB MKD WBI IWOKWXWVMKVR MKDIJYR YNI ...

  8. 数值分区间_EXCEL统计区间个数的专属函数

    这次我们学习一个新的函数! 数字区间个数统计 如下图,要求统计四个成绩区间段的人数. 如果只统计一个区间内的人数,比如上图统计60-80分之间的人数,你会怎么办呢? 1.条件计数 =COUNTIF(B ...

  9. UA MATH566 统计理论8 用Pivot构造置信区间

    UA MATH566 统计理论8 用Pivot构造置信区间 用Pivot构造置信区间 一般性方法 最优置信区间 置信区间的频率派解释 上一讲介绍的构造置信区间的方法是根据假设检验导出置信区间,但我们感 ...

  10. 2018.11:大数据在政府统计中的应用、瓶颈及融合路径(余芳东)

    内容摘要:应用大数据是未来政府统计发展的必然趋势.本文系统梳理当前政府统计应用大数据的基本类型,研究探索大数据统计应用实践和基本方法思路,剖析大数据统计应用面临的困难和瓶颈,提出推进大数据与政府统计工 ...

最新文章

  1. mybatis02映射动态sql关联查询spring整合mybatis
  2. 励志前行,加速BCH创新落地
  3. python中BeautifulSoup简单使用
  4. oracle10g库连接报错
  5. 财务报销人员是公司亲信的弊端
  6. oracle中dlink使用,Oracle,MetaLink,中文使用指南
  7. linux服务器网卡做聚合,Linux物理网卡聚合及桥接
  8. nacos 配置中心和注册中心依赖后报错,提示 org.apache.http.impl.client.HttpClientBuilder 这个类找不到
  9. mano安全_爱立信:O-RAN存在的安全风险
  10. 解决idea中xml文件报红问题
  11. java运用ascii实现动画效果_安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果...
  12. 南阳市服务器主机销售,南阳市服务器价格
  13. 函数 注释规范_Go语言编码规范
  14. 23. 变量、作用域和内存问题
  15. 关于需求跟踪矩阵的6个问题
  16. 湘源里面关于缩放的问题
  17. coherence mysql_Coherence Step by Step 第三篇 缓存(二) 配置(翻译)
  18. SLG变现强劲,却易遭黑产侵袭,如何破局?SLG游戏安全方案定制做到出奇制胜!
  19. OUC暑期培训(深度学习)——第一周学习记录:深度学习和pytorch基础
  20. 库里扛起了勇士对凯尔特人的第四场

热门文章

  1. 双系统、多系统快速切换
  2. 实验二 (一) 大小写英文字母表
  3. Word转成PDF后目录出现未定义书签是怎么回事
  4. 电脑风扇狂转,声音巨大是什么原因?
  5. jFreeChart连接oracle数据库数据实现顺序图,饼形图和柱状图
  6. Android之伪装QQ后台偷偷发短信
  7. mkv文件怎样转成mp4
  8. 后端返回图片二进制流,前端处理
  9. bugku-web-滑稽
  10. 为什么不同文化中都会发现圆形房屋