首页 > 其他 > 详细

结对作业——WordCount进阶版

时间:2018-10-08 15:39:32      阅读:177      评论:0      收藏:0      [点我收藏+]

1.

博客作业地址

2.

3.psp表格

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

4.解题思路描述

此次实验增加了几个新功能,并加入了GUI,我主要负责的是新功能的模块。因为上次实验中的代码耦合性不算高,所以此次主要内容在于解决按照要求的词组进行排序。一开始我想运用正则表达式进行匹配:以\b[a-zA-Z]{4,}[A-Za-z0-9]为基础,要求多少个词组就在后面跟上多少个[^0-9a-zA-Z]+[a-zA-Z]{4,}[A-Za-z0-9]。然而,我在尝试以后才发现,这样匹配一个单词只能出现在一个词组中,无法达到要求中的词组匹配。所以,因为正则表达式学的不到位,无法写出符合要求的正则表达式。我选择运用笨办法,就是先将所有输入的单词整理进arraylist,然后再将他们按照要求分类放入map中 String[] phraseTmp = new String[phraseNum]; 这样虽然效率低,但总算保证符合要求。
新功能作为一个新函数,重载了上一次写的函数,加入了新的 int phraseNum `参数。不足的点在于,因为一开始我希望直接运用正则表达式进行匹配,所以没有想要将整理单词列表作为一个单独的函数提出来。这也就造成了两个方法都需要分别进行单词的提出,自然而然的降低了效率。

5.代码组织与单元测试

单元测试相对上一次来说改动不大,主要是增加了对词组的测试

技术分享图片

技术分享图片

技术分享图片

技术分享图片

6.代码说明

我负责的值得说明的代码部分主要是词组部分。我运用的是笨办法,首先创建与词组要求的词汇数量相同的字符串数组,这样可以保证保存下所有词组不会有遗漏。

先用for循环将前几个词分别保存在相应的字符串中,一直循环到第一个字符串词数量达到要求。然后将第一个字符串存入map中
技术分享图片

然后,每遇到一个词都将其存在所有字符串中,每当一个字符串满就将其与map中存入的词组比对,如果不同则加入,相同则value加一。

技术分享图片

7.效率分析

技术分享图片

技术分享图片

因为我没有运用stringbuilder,而是对字符串直接"+",所以可能拖慢了速度。

8.实践经历与感受

结对作业——WordCount进阶版

原文:https://www.cnblogs.com/piraat/p/9754497.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!