结对作业——WordCount进阶版

一、博客地址

冯一:https://www.cnblogs.com/fy201621123066/p/9751614.html

徐建民:https://www.cnblogs.com/happyzm/p/9626779.html

码云:https://gitee.com/WoShiLiangChaoWeiDeShiYou/wewordcount.git
(ps:很想问一个傻问题,为什么这个地址没办法直接点。。。刚开始都可以,现在就变了,真是个善变的东西,很难过,求解)

二、结对PSP表格

PSP2.1 个人开发流程 预估耗费时间(分钟) 实际耗费时间(分钟)
Planning 计划 30 40
· Estimate 明确需求和其他相关因素,估计每个阶段的时间成本 40 50
Development 开发 300 600
· Analysis 需求分析 (包括学习新技术) 60 75
· Design Spec 生成设计文档 70 100
· Design Review 设计复审 30 40
· Coding Standard 代码规范 30 35
· Design 具体设计 60 80
· Coding 具体编码 200 260
· Code Review 代码复审 30 25
· Test 测试(自我测试,修改代码,提交修改) 0 0
Reporting 报告 60 80
· 测试报告 0 0
· 计算工作量 20 35
· 并提出过程改进计划 0 0

三、解题思路描写

1、编程语言

  • Java
    2、对于题目的理解与知识点的使用
  • 题目中有提到增加了两个新的功能:
    词组统计:能统计文件夹中指定长度的词组的词频
    自定义输出:能输出用户指定的前n多的单词与其数量
    词组统计用到了多重循环,对每一层进行一次判断,这样子统计得更准确一些;对于自定义输出这个东西有点难度,这次就只增加了词组统计这个功能;伙伴就是增加了界面。
    3、开始设计和编码
  • 先划分好类,要用哪些方法,都先设计好了再进行下一步
  • 进行编码
    4、遇到问题的解决方法
  • 这一次有了同伴,遇到问题两个人进行了讨论,问题就没有很大,多一个人多一种想法;也让我感觉到了每个人都有自己擅长的部分,同伴还是很给力的,感激。

四、设计实现过程

  • 划分的类
    WordCount类:用来存放所统计字符数、单词数、词组统计等。
    wordlist()方法
    getWordcount()方法
    这次就只增加了一个功能,就只把那个统计词组的方法添加进去了而已。
  • GUI界面设计
    使用netbeans进行了界面布局

五、代码说明

  • wordlist()方法:将Map中统计的单词按出现的次数多少来进行排序,然后存储在list中。
 public List wordlist(Map Wordcount) {
	   List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(wordcount.entrySet());
       Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {

           @Override
           public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // 对Map中内容进行排序,先按词频后按字典顺序
               if (o1.getValue() == o2.getValue()) {
                   return o1.getKey().compareTo(o2.getKey());
               }
               return o2.getValue() - o1.getValue();
           }

       });
       return list;
   }
	}

  • getWordcount()方法:统计单词出现的次数,然后存储在Map当中。
public Map getWordcount() {//统计每个单词出现次数
		String []wordnum=text.split("\\s+");
		for(int i=0;i<wordnum.length;i++) {
			if(wordnum[i].length()>=4) {
				char c;
				for (int j = 0; j < 4; j++) {
					c = wordnum[i].charAt(j);
					if (!(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')) {
						if(wordcount.get(wordnum[i]) != null) {
							wordcount.put(wordnum[i], wordcount.get(wordnum[i])+1);
							
						}
						else {
							wordcount.put(wordnum[i], 1);
						}
					}
			}
		}
	}
		return wordcount;
	
}        

六、单元测试


覆盖率:

七、结合在构建之法中学习到的相关内容与结对项目的实践经历,描述结对的感受,是否1+1>2?

这一次的结对编程很有意思,有了伙伴的感觉就是不一样,做事起来都积极一些,不会像一个人的时候不想做就等会再做;结对对于我来说是1+1>2的,每个人知道的东西不一样,会的东西也不一样,这样就可以进行互补,也有人分担一下,很棒;我想之后的团队应该会更有趣,有些期待。

posted on 2018-10-08 20:08  网络1613冯一  阅读(195)  评论(1编辑  收藏  举报

导航