作业4 结对编程-词频统计(2)
双方的贡献比例:50%:50%。
我的Github链接
题目要求:
- 读取小文本文件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)中的频率。
此次的必做2 感觉不是太难我和我下组的人先对题目进行了讨论,发现本次作业可以在上一次作业的基础上进行改良。上一次的作业的词频统计已经对读取大文件和词频计数有了一个框架,这次的题目主要是在上一次的基础上添加一个查找的代码。讨论到这里我们便开始了各自的添加,而后又对两人所写的代码进行比较分析,最终的得出了本次作业的源代码。
下面为我一开始写的部分代码,其中是有错误的结果难以运行而后讨论发现错误的所在:
long len=infoids.size(); System.out.println("请输入查找单词"); Scanner in1 = new Scanner(System.in); String s1 = in1.next(); for (int i = 0; i <len; i++) { Entry<String, Integer> id =infoids.get(i); if(s1==id.getKey()) System.out.println(id.getKey()+":"+id.getValue()); } in1.close();
这段代码中 if(s1==id.getKey()) 的语句是有问题的;字符串的比较不能如此来,后来经过改正才得出了正确的如下代码:
System.out.println("请输入查找单词"); Scanner in1 = new Scanner(System.in); String s1 = in1.next(); for (int i = 0; i <len; i++) { Entry<String, Integer> id =infoids.get(i); if(s1.equals(id.getKey())) System.out.println(id.getKey()+":"+id.getValue()); } in1.close();
这段代码中 if(s1.equals(id.getKey())) 的语句就可以正确的运行字符串的比较;
而后我们又将这一段键盘输入的语句改写到了主函数中:
System.out.println("请输入查找单词");
Scanner in1 = new Scanner(System.in);
String s1 = in1.next();
到此作业代码完成,开始进行结果验算,我验算的大文件Gone_with_the_wind.txt;结果如下图:这次大文件查找的是that 频率为4656.
而后又查找大文件中scarlett 频率为 2438.
如果查找的单词大文件中没有 ;例如查找is单词;则显示查找不到该单词:
这是程序运行的结果下面是大文件中单词出现的频率(作业3得出的txt文件来验证上面程序运行的结果)
上述完毕,程序运行成功。
本次的实验总结:两个人的结对编程可以加快找出错误和完善程序的速度,本次作业中我深有体会,也可以让自己认识到不足,可以完善自身。