第2周个人作业:WordCount
Github地址:
https://github.com/hddddd/Wordcount
1.PSP表格
PSP2.1 |
PSP阶段 |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
45 |
· Estimate |
· 估计这个任务需要多少时间 |
15 |
20 |
Development |
开发 |
1000 |
900 |
· Analysis |
· 需求分析 (包括学习新技术) |
150 |
200 |
· Design Spec |
· 生成设计文档 |
30 |
45 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
45 |
60 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
· Design |
· 具体设计 |
70 |
40 |
· Coding |
· 具体编码 |
700 |
900 |
· Code Review |
· 代码复审 |
150 |
200 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
300 |
100 |
Reporting |
报告 |
150 |
90 |
· Test Report |
· 测试报告 |
50 |
40 |
· Size Measurement |
· 计算工作量 |
10 |
20 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
合计 |
2800 |
3000 |
2、解题思路
逐行读取文件代码,通过正则表达式逐个处理最后相加。
3.程序设计实现过程
本项目采用JAVA语言实现,除主函数外,还有多个自定义函数共同组成。
4、关键代码:
此处引用成建伟同学的代码。
字符数、单词数和行数
while((line=br.readLine())!=null)
{ linecount++;
sb.append(line);
charcount+=line.length();
String[] split = line.split("\\s++|\\.|,|\\;|\\(|\\)|\\[|\\]|\\<|\\>|\\=|\\-|\\+|\\*|\\/|\\{|\\}");
//设置单词划分的要求
for (int i = 0; i < split.length; i++) {
// 获取到每一个单词
Integer integer = map.get(split[i]);
// 如果这个单词在map中没有,赋值1
if(null==integer){
map.put(split[i], 1);
}else{ // 如果有,在原来的个数上加上一
map.put(split[i], ++integer);
}
}
}
// 遍历,根据key获取所对应的value
Set<String> keySet = map.keySet();
for (String string : keySet)
if(!(string.equals("")))//测试时候发现,去除不了多个空格的要求
wordcount+=map.get(string);
此处引用成建伟同学的代码。
扩展功能
//统计代码行/空行/注释行
while ((line = br.readLine()) != null) {
line = line.trim();
if (line.matches("^[//s&&[^//n]]*$")||line.equals("{")||line.equals("}")) {
/* 空行 :本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”*/
whiteLines++;
}
/* 本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释:
* }//注释
*/
else if (line.startsWith("/*") && !line.endsWith("*/")||
((line.startsWith("{/*")||line.startsWith("}/*"))&&!line.endsWith("*/"))){
// 判断此行为"/*"开头的注释行
commentLines++;
comment = true;
} else if (comment == true && !line.endsWith("*/")
&&!line.startsWith("*/")) {
// 为多行注释中的一行(不是开头和结尾)
notLine++;//虚假的注释行计数
commentLines++;
} else if (comment == true && (line.endsWith("*/")||line.startsWith("*/"))) {
// 为多行注释的结束行
commentLines++;
comment = false;
} else if (line.startsWith("//")|| line.startsWith("}//")||line.startsWith("{//")||
((line.startsWith("{/*") ||line.startsWith("}/*")||line.startsWith("/*")) && line.endsWith("*/"))) {
// 单行注释行
commentLines++;
} else { // 正常代码行
normalLines++;
}
5.测试设计过程:
在wc.exe的目录下放置测试文件,分别输入以下命令:
1. wc.exe -w -c -l test.c
2. wc.exe -w -c D:\test\test.c
3,wc.exe -w test.c -e stoplist.txt -o out.txt
4. wc.exe -a -c -l -w test.c -e stoplist.txt
5. wc.exe -a -c test.c -o out.txt
6. wc.exe -s -w test.c -e stoplist.txt
7. wc.exe -w -l D:\test\test.c -o out.txt
8.wc.exe -a -l -c -w test.c
9.wc.exe -l test.c -e stoplist.txt
10. wc.exe -s -w test.c -o out.txt
得到相应的测试结果。
6.心得体会:
本次作业量较大,但对自己的能力也是一种锻炼,学到了许多东西,受益匪浅,希望在以后的学习生活中能够继续努力。
参考文献链接:
http://www.cnblogs.com/jakejian/p/8613002.html
http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
第2周个人作业:WordCount的更多相关文章
- 第二周个人作业WordCount
1.Github地址 https://github.com/JingzheWu/WordCount 2.PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...
- 第1周-java作业总结与建议
1. 本周作业简评与建议 存在的问题: 这周的作业普遍存在一个格式混乱的问题.请认真学习Markdown,我们后面的作业都要使用Markdown.Markdown学习请参考http://group.c ...
- 吴恩达深度学习第4课第3周编程作业 + PIL + Python3 + Anaconda环境 + Ubuntu + 导入PIL报错的解决
问题描述: 做吴恩达深度学习第4课第3周编程作业时导入PIL包报错. 我的环境: 已经安装了Tensorflow GPU 版本 Python3 Anaconda 解决办法: 安装pillow模块,而不 ...
- 吴恩达深度学习第2课第2周编程作业 的坑(Optimization Methods)
我python2.7, 做吴恩达深度学习第2课第2周编程作业 Optimization Methods 时有2个坑: 第一坑 需将辅助文件 opt_utils.py 的 nitialize_param ...
- 结队第二次作业——WordCount进阶需求
结队第二次作业--WordCount进阶需求 博客地址 051601135 岳冠宇 博客地址 051604103 陈思孝 博客地址 Github地址 具体分工 队友实现了爬虫功能,我实现了wordco ...
- 20155213 第十二周课堂作业MySort
20155213 第十二周课堂作业MySort 作业要求 模拟实现Linux下Sort -t : -k 2的功能 参考 Sort的实现 提交码云链接和代码运行截图 初始代码 1 import java ...
- c++ 西安交通大学 mooc 第十三周基础练习&第十三周编程作业
做题记录 风影影,景色明明,淡淡云雾中,小鸟轻灵. c++的文件操作已经好玩起来了,不过掌握好控制结构显得更为重要了. 我这也不做啥题目分析了,直接就题干-代码. 总结--留着自己看 1. 流是指从一 ...
- 软件测试第二周个人作业:WordCount
github地址:https:/github.com/muzhailong/wc.git 第一次写博客很不容易,也算是一个好的开始吧. 1. 个人作业要求 作业简述:根据WordCount的需求描 ...
- 软件质量与测试--第二周作业 WordCount
github地址: https://github.com/wzfhuster/software_test_tasks psp表格: PSP2.1 PSP 阶段 预估耗时 (分钟) 实际耗时 (分钟) ...
- 软件测试第二周作业 WordCount
本人github地址: https://github.com/wenthehandsome23 psp阶段 预估耗时 (分钟) 实际耗时 (分钟) 计划 30 10 估计这个任务需要多少时间 20 ...
随机推荐
- spring boot + apache camel 传输文件
一 sftp搭建略 这里简单说一下为什么使用sftp.ftp和sftp各有优点,差别并不是太大.sftp安全性好,性能比ftp低.ftp对于java来说并不复杂,效率也高.之所以使用sftp主要是可以 ...
- git命令行获取某分支代码
参考https://www.cnblogs.com/nylcy/p/6569284.html git clone -b branch1 http://xxx.xx.xxx... git clone - ...
- odoo KeyError
one2many字段对应的表名不存在造成
- 20164319 刘蕴哲 Exp5 MSF基础应用
[实践内容] 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践(这里我做了两个:ms08_067[成功]和ms17_010[成功 ...
- 20164319 刘蕴哲 Exp1 PC平台逆向破解
[实践内容概述] 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,ge ...
- 怎么清理Linux系统磁盘空间占用大:/dev/xvda1
1.首先查看磁盘占用情况 df -h Filesystem Size Used Avail Use% Mounted on/dev/xvda1 20G 18G 621M ...
- MVC开发T4代码生成之一----文本模板基础
T4文本模板 T4全写为Text Template Transformation Toolkit,是一种编程辅助工具,用来使程序代码自(懒)动(猿)生(福)成(利)的工具.MVC开发中大量使用了T4模 ...
- JAVA常用注解
摘自:https://www.cnblogs.com/guobm/p/10611900.html 摘要:java引入注解后,编码节省了很多需要写代码的时间,而且精简了代码,本文主要罗列项目中常用注解. ...
- CentOS7.2 1511部署RabbitMQ
一.安装RabbitMQ依赖的的Erlang最小支持包(当然也可以安装完整的Erlang) 1.下载RabbitMQ的Erlang最小支持包源文件 git clone https://github.c ...
- ERRORS !MySQL 和 Javaweb 的报错合集
ERROR:1175. You are using safe update mode and you tried to update a table without a WHERE that uses ...