第二次编程作业
git地址:https://gitee.com/zhang-yanzi-421/project-java
PSP
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 50 | 30 |
| • Estimate | • 估计这个任务需要多少时间 | 100 | 140 |
| Development | 开发 | 60 | 70 |
| • Analysis | • 需求分析 (包括学习新技术) | 60 | 60 |
| • Design Spec | • 生成设计文档 | 20 | 10 |
| • Design Review | • 设计复审 | 40 | 30 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 50 | 30 |
| • Design | • 具体设计 | 60 | 40 |
| • Coding | • 具体编码 | 70 | 80 |
| • Code Review | • 代码复审 | 100 | 150 |
| • Test | • 测试(自我测试,修改代码,提交修改 | 80 | 150 |
| Reporting | 报告 | 60 | 50 |
| • Test Repor | • 测试报告 | 40 | 40 |
| • Size Measurement | • 计算工作量 | 50 | 40 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 20 |
| 合计 | 1000 | 1100 | |
统计输入字符数
使用string.split(""),将输入字符串拆分为单字符构成的数组,统计数组长度即为字符数。
let charArrat = data.split("");
return charArrat.length;
统计输入单词总数
统计单词首先需要找出所有单词,首先根据给定的分隔符拆分出单词,分割符为空格,非字母数字符号,可以使用使/[A-Za-z0-9]/这一正则来表示,用string.split(reg)来根据正则把可能为单词的部分拆分出来;接下来是验证单词,遍历数组,使用[a-zA-Z]{4}规则来验证每一项是否为单词,如果不是,使用splice函数将其从数组中移出,最后返回数组长度即为单词总数。
let words = data.split(/[^A-Za-z0-9]/);
for(let i=0; i<words.length; i++) {
if(words[i].length < 4) {
words.splice(i, 1);
i--;
}
const reg = new RegExp("^[a-zA-Z]{4}");
if(!reg.test(words[i])) {
words.splice(i, 1);
i--;
}
}
return words.length;
统计单词出现次数
首先根据统计单词总数的经验,拆分出单词数组(未校验格式);维护一个map,遍历数组检查格式符合后,将其转为小写,再检查map中当前单词是否存在,不存在则将当前单词为key,1为value加入map,否则更新单词对应value+1;
let words = data.split(/[^A-Za-z0-9]/);
let wordsMap = new Map();
for(let i=0; i<words.length; i++) {
if(words[i].length < 4) {
words.splice(i, 1);
i--;
}
else {
const reg = new RegExp("^[a-zA-Z]{4}");
if(!reg.test(words[i])) {
words.splice(i, 1);
i--;
}
else{
words[i] = words[i].toLowerCase();
if(wordsMap.has(words[i])) {
wordsMap.set(words[i], wordsMap.get(words[i])+1);
}
else {
wordsMap.set(words[i], 1);
}
}
}
}
心路收获
在这次的项目中,我复习了如何用github管理代码,也学到了不少新知识。我知道了原来不同的语言有不同的代码规范,并且制定了自己的Java代码规范。我也接触到了PSP表格这种估计开发时间的方法,在项目开发的过程中开始有意识地估计和记录各项工作的时间。我还学会了编写构建之法中提到的单元测试,我想单元测试对于复杂的项目是很重要的。在完成词频统计程序的开发的过程中,我学会了简单使用正则表达式,复习巩固了一些Java的知识,也锻炼了思考的能力。
对于我来说,这次的作业难在接触到的新东西比较多,有需要学习的新知识,会遇到一些问题,文档的写作也和以往的作业比较不同,希望经过这一次的练习,我能在以后的作业中做得更快更好。

浙公网安备 33010602011771号