结对编程—词频统计
2016-03-22 23:19
295 查看
作业要求
[必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。
解释:
选项 -f 表示后面跟文件名
输出格式规定(参考作业3中的示例):
首先按照频率由高到低排序
频率一样的词, 按照字典顺序排序
此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间。
本次和舍友 范鋆 同学一起合作完成 他的博客地址
http://home.cnblogs.com/u/fan-jun/
合作图片
编程语言 JAVA
编译环境 eclipse
本次作业中我们遇到了比较大的困难,在第三次作业中我使用了c++编程。但是由于算法过于复杂在运行给出的大文件时程序崩溃。
应该是由于c++中数组的内存空间有限导致的。这段时间在学习java,所以在和舍友讨论后决定使用java语言完成此次作业。
我主要负责文件结果的输出部分主要代码如下
public static void sort(Map<String,Integer> map){ List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return (o2.getValue() - o1.getValue()); } }); //排序 String [] str3=null; int len=infoIds.size(); int count=1; try{ FileWriter fw=new FileWriter("Result1.txt"); BufferedWriter bw=new BufferedWriter(fw); int q=0; for (int i = 0; i < len; i++) { //输出 Map.Entry<String, Integer> id = infoIds.get(i); if(id.getKey()!=null) str3=id.getKey().split(""); if( str3!=null&&str3.length>3) //str3可能为空,且这个控制只有含有3个字母以上的单词才打印 if(count<=5) { q=id.getValue(); bw.write(id.getKey()); bw.write(": "); bw.write(String.valueOf(q)); bw.write("\t"); count++; } else { q=id.getValue(); bw.write(id.getKey()); bw.write(": "); bw.write(String.valueOf(q)); bw.write("\r\n"); //换行 count=1; } } bw.close();fw.close(); }catch(Exception e){ e.printStackTrace();} } }
程序结果
总结心得
通过本次合作编程,我意识到了合作的重要,两个人往往想法比一个人丰富。也很少会犯低级错误,写程序的效率大大提高了。
相关文章推荐
- 作业:c++作业2-标准体重
- java 初始化顺序
- 【必做1】结对编程—词频统计
- 结对编程__词频统计
- 简明Python教程学习笔记_6_面向对象编程
- Django--上传文件
- C++求动态数组长度(windows通过)
- This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms whil...
- 看Javadoc文档
- [HDU3966]Aragorn's Story 做题笔记
- 并发之痛 Thread,Goroutine,Actor
- Python3.5.1 RSA加密
- Struts2实现登录流程
- x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
- x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
- 怎样写出工业级的C代码 (2)
- 使用Struts 2开发应用02:AJAX
- java泛型举例
- C++ 多线程计时的bug,千万别用clock()
- SpringMVC 过滤json对象