作业4:结对项目—— 词频统计
0. 时间/计分
- 总分40 分
- 提交分2 阶段:
- 第一阶段提交[必做1],截止时间 2016-03-22,24点;
- 第二阶段提交[必做2]、[选做1]、[选做2],截止时间2016-03-29,24点。
- PS: 必做题 每个阶段必须提交;选做题不做强制要求。
1. 目标
- 代码复审练习
- 结对练习
- 编写单元测试
2. 要求
- [必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)
-
命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。PS: 命令行格式的程序编写参考
-
解释:
- 选项 -f 表示后面跟文件名
- 输出格式规定(参考作业3中的示例):
- 首先按照频率由高到低排序
- 频率一样的词, 按照字典顺序排序
-
此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间。PS: 请看一位同学做的效能分析示例。
-
原先程序中循环部分如下:
for (int i = 0; i < infoIds.size(); i++)
{
Entry<String, Integer> id = infoIds.get(i);
System.out.println(id.getKey()+":"+id.getValue());
}
改进后程序如下:
len= infoIds.size(); // 先计算
for (int i = 0; i < len; i++)
{
Entry<String, Integer> id = infoIds.get(i);
System.out.println(id.getKey()+":"+id.getValue());
}
- [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率。
- 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似)
- 解释:
- 选项 -f 表示打开某一文件(filename.txt)
- 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率。
-
[选做 1] 对于在指定目录下(递归)的所有的文本文件(例如扩展名为:"txt", "cpp", "h", "cs", "java"等),计算每个单词的出现频率,并将结果输出到一个文本文件
- 命令行格式: 提示符> Myapp.exe -d directory-name > result.txt (PS:C++ 程序,Java 程序输出方式类似)
- 解释:
- 选项 -d 表示后面跟目录(path)
-
[选做 2] 写至少10个单元测试,确保程序结果正确(例如,对于空目录应该输出空)
3. 提交
- 特别要求:
- 博客开头描述: 结对的对象( 1. 博客地址 ,2. 编写系统的Github 链接, 3.双方的贡献比例, 4. 结对编程照片(证据))
- 博客总结部分,写出你在结对编程过程是不是遇到困难,双方沟通怎么沟通的?你的心得、收获等。
- 其它要求 同作业3
4. 定义
- 同作业3 要求