编程作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/computer-science-class2-2018/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-science-class2-2018/homework/11878 |
这个作业的目标 | 学会使用Gitee |
作业正文 | github初始用,编码规范 |
其他参考文献 | Java开发实战经典 |
码云地址:https://gitee.com/tzmad/project-c |
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 20 |
• Estimate | • 估计这个任务需要多少时间 | 1000 | 2000 |
Development | 开发 | 100 | 300 |
• Analysis | • 需求分析 (包括学习新技术) | 60 | 120 |
• Design Spec | • 生成设计文档 | 20 | 30 |
• Design Review | • 设计复审 | 5 | 8 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 4 | 8 |
• Design | • 具体设计 | 30 | 50 |
• Coding | • 具体编码 | 100 | 800 |
• Code Review | • 代码复审 | 5 | 10 |
• Test | • 测试(自我测试,修改代码,提交修改) | 100 | 200 |
Reporting | 报告 | 20 | 40 |
• Test Repor | • 测试报告 | 15 | 25 |
• Size Measurement | • 计算工作量 | 10 | 30 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 50 |
合计 | 1479 | 3691 |
解题思路:
定义四个类来实现:(charsNum)统计文件的字符数,(wordsNum)统计文件的单词总数,(linesNum)统计文件的有效行数,( wordsMap)统计文件中各单词的出现次数。
用split()方法来分割单词,并通过正则表达式将内容分成单词数组并检验单词的合法性,调用map函数来实现单词频率的计算。
代码规范的链接:https://gitee.com/tzmad/project-java/blob/master/20188446/codestyle.md
定义charsnum,wordsnum,linesnum,wordsmap四个类来分别实现题目要求的四个功能块。
private int charsNum;/字符数/
private int wordsNum;/单词总数/
private int linesNum;/有效行数/
private Map<String, Integer> wordsMap;/存放单词与次数/
统计频率最高的10个单词数:用for语句判断是否已经有10个频率最高的单词,没有就加1。
for(Map.Entry<String, Integer> map : topWords){/统计频率最高的10个单词/
if (top < 10){
writer.write(map.getKey() + ": " + map.getValue() + "\n");
top++;
}
统计单词总数:使用split来分割字符串,用正则表达式来判断单词是否符合题目要求。
public void countWordsNum(){/统计单词总数/
wordsNum = 0;
wordsMap = new HashMap<String,Integer>();
String word;
Integer num;
String[] words = content.split("[^a-zA-Z0-9]+");
for (int i = 0; i < words.length; i++){
if (words[i].matches("[a-zA-Z]{4,}[a-zA-Z0-9]*")) {
wordsNum++;
word = words[i].toLowerCase();
if (wordsMap.containsKey(word)){
num = wordsMap.get(word);
num++;
wordsMap.put(word, num);
}
else {
wordsMap.put(word, 1);
}
}
}
}
代码测试截图:
心路历程与收获:
这次作业让我学会了如何使用码云的一些功能,养成了如何去写一个工程的习惯,复习了以前学习的Java的知识点,还知道了map函数的使用方法,也知道了遇到难题如何去请教别人以及怎样解决这个难题的,其次还知道了完成一个项目是需要很多人团结协作的,而不是一个人单打独斗逞英雄的时候,一起交流能够更快的完成制定的目标。