一、可读入英文词数大于等于1个的任意英文文本文件。
二、能读取容纳英文原版《哈利波特》10万词以上的文章。
三、单词词频统计功能:输入从该文本中想要查找词频的一个或任意多个英文单词,显示对应单词在文本中出现的次数和柱状图。
四、高频词统计功能:从键盘输入高频词输出的个数k,按文本中词频数降序显示前k个单词的词频及单词。
五、统计文本中全部单词数量及词频数,并将单词及词频数按字典顺序输出到文件result.txt中。html
一、读文本功能——读入文本数据
二、用户输入功能——输入用户想要查询的单词以及想要查询高频单词的个数
三、排序功能——降序排序和按字典顺序排序
四、词频统计功能——显示输入单词在文本中出现的次数和柱状图以及降序显示前k个单词的词频及单词
五、写文件功能——将输出数据存入文件中java
(1)、Main.javagit
控制整个程序github
<一、实现对文本文件中数据的读入
<二、对各项功能进行选择,并调用wordcount.java中相应的函数实现各项功能编程
(2)、wordcount.java编程语言
包括四个功能函数:函数
<一、显示词频和柱状图(histogram函数)——输入从该文本中想要查找词频的一个或任意多个英文单词,显示对应单词在文本中出现的次数
和柱状图。
<二、输出高频词(HighWord函数)——按文本中词频数降序显示前k个单词的词频及单词。
<三、排序(sort函数)——降序排序和按字典顺序排序
<四、写文件(output函数)——将文本中全部单词数量及词频数按字典顺序输出到文件result.txt中学习
Map<String, Integer> map = new TreeMap<String, Integer>(); BufferedReader b = null; try { b = new BufferedReader(new FileReader(A)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("文件没有找到,请输入正确的文件路径!"); }
void histogram(Map<String, Integer> map){ System.out.println("请输入须要查询的单词 :"); String words = in.nextLine(); String[] word= words.split(",");//输入的单词之间以逗号分隔 float sum; for(int i=0; i<word.length; i++) { for(Map.Entry<String,Integer> y : map.entrySet()) { //能够查看Map类中的entrySet()方法和Entry()方法,for中是一个赋值语句 if(word[i].equals(y.getKey())) { System.out.println("单词 —— "+y.getKey() + " 出现 (" + y.getValue()+" )次"); sum=(float)(y.getValue())/500; for(int j=0;j<sum;j++){ System.out.print("*"); } System.out.println(); } } } }
public class Main { static Scanner in = new Scanner(System.in); public static void main(String[] args)throws IOException{ Map<String, Integer> map = new TreeMap<String, Integer>(); // 读取要处理的文件,并将它放在b中 System.out.println("~~~~~~~~词频统计小软件~~~~~~~~"); System.out.println("请选择如下功能序号:"); System.out.println("一、读取文本"); System.out.println("二、显示所要查询的单词词频"); System.out.println("三、输出词频最高的前k个单词"); System.out.println("四、输出结果存入result.txt中"); System.out.println("0、退出"); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); int y= in.nextInt(); int i=0;
在一个软件项目的开发过程当中,首先须要进行需求分析,对一个项目有总体的认知。其次,将整个项目按照功能分红若干个模块,每一个模块完成本身对应的功能,而且各个模块之间相互联系,协做完成全部功能。在本次词频统计软件项目中,我建立了两个类。Main类控制整个程序,读入文本文件中的数据,显示菜单并调用wordcount类中的各个函数。wordcount类中包含四个函数:histogram函数(显示词频和柱状图)、HighWord函数(输出高频词)、sort函数(降序排序和按字典顺序排序)、output函数(将结果输出到文件result.txt中),分别实现各自的功能,并相互联系实现整个软件项目。测试
PSP2.1 | 任务内容 | 计划共完成须要的时间(min) | 实际完成须要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 25 |
Estimate | 估计这个任务须要多少时间,并规划大体工做步骤 | 15 | 10 |
Development | 开发 | 250 | 300 |
Analysis | 需求分析 (包括学习新技术) | 20 | 25 |
Design Spec | 生成设计文档 | 10 | 12 |
Design Review | 设计复审 | 10 | 25 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
Design | 具体设计 | 15 | 20 |
Coding | 具体编码 | 200 | 300 |
Code Review | 代码复审 | 15 | 25 |
Test | 测试(自我测试,修改代码,提交修改) | 25 | 30 |
Reporting | 报告 | 15 | 20 |
Test Report | 测试报告 | 10 | 15 |
Size Measurement | 计算工做量 | 12 | 15 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 20 | 15 |
从PSP中能够看出计划完成须要的时间与实际完成须要的时间之间是有必定的差距的,主要缘由仍是基础不扎实,对Java掌握的不熟练,致使写代码时很困难。同时,在第二次我的项目的完成过程当中,我深入认识到了本身在某些方面的薄弱,不管是在总体的构思上,仍是在分模块的设计上,都不是很顺利。最后经过查阅资料,请教同窗,才成功完成项目二。从此次项目中也明白了本身还有许多地方须要学习,对于Java的相关知识点须要尽快去回顾和学习,努力作好以后的项目。