链接
github地址
(PS:如果我最后还是没法使用评测工具,就用eclipse运行一下我的代码,然后看在结果可怜份上,给点分吧...)
PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
45 |
· Estimate |
· 估计这个任务需要多少时间 |
10 |
15 |
Development |
开发 |
500 |
620 |
· Analysis |
· 需求分析 (包括学习新技术) |
400 |
410 |
· Design Spec |
· 生成设计文档 |
10 |
8 |
· Design Review |
· 设计复审 |
20 |
25 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
20 |
· Design |
· 具体设计 |
30 |
30 |
· Coding |
· 具体编码 |
120 |
200 |
· Code Review |
· 代码复审 |
10 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
200 |
420 |
Reporting |
报告 |
10 |
15 |
· Test Repor |
· 测试报告 |
10 |
20 |
· Size Measurement |
· 计算工作量 |
15 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
20 |
|
· 合计 |
1405 |
1868 |
PS吐槽:我真没想到自己这么这么菜,从中秋前一天开始,几乎从早上做到半夜(完成前一天到3点惹),完成时间已经非常保守了,
但依旧超过20多小时。BUG还很多,单元测试也还不会搞。。。
我一直前进,却不知道后面会怎么怎么样...
思路分析
一、解题步骤
1、最开始联想到关键字查询,通过联系讨论发现,与正则表达式应用相关。
2、解决
第一步:用逗号分开名字
第二步:用正则表达式提取13位手机号
第三步:分析地址的划分(难点)
3、对出现相应的bug进行调式修改
二、设计与实现过程
1、函数类型(两个类)
User类构造函数:输入整个字符串,并得到名字与手机号,并分割出地址串 |
User类AddressSolution函数:输入地址串,对地址分析 |
User2类webhelp函数:调用百度地图API相应查询 |
User类get1,get2函数:对一类题二类题的结果区分 |
User类getall函数:对所有属性结果的处理 |
User类main主函数: |
2、过程问题
一开始单纯地认为百度地图API可以直接给我准确的答案,后来发现经过地址正解析逆解析后,四级包括以后四级以后的地址会产生较大误差,
而前三级相对较为准确。于是采取前三级调用API,后面采用正则表达式关键字查询。
对于附加的难度3题目,API只能怪补上缺失的前三级。
3、关键代码
代码关键在于调用API搞定前三级,赋值给province,city,district变量
然后再对剩余地址进行5级或7级的分析
String[] arr=uu.webhelp(b);//调用API,然后赋值前三级 ”(.*?区|.*?街道|.*?镇|.*乡)?(.*)“//5级分类后两级 “(.*?街道|.*?镇|.*乡)?(.*?路|.*?巷|.*?街)?([\d]+?号|[\d]+.?道)?(.*)”//7级之类后三级
4、资料来源
性能分析
运行前
运行后
很明显这次代码的主题对象几乎全用String类处理,对String类的需求较为巨大。所以,对于程序的改善便应该从减少无关对象开始。
(PS:其实就是因为代码的实现对于我这垃圾来说有些困难,对于bug的处理在于简单粗暴地新建对象,对于内存冗余问题只能依赖
java的回收机制)
单元测试
题目样例的测试
{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]} {"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","福州大学10#111"]} {"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]} {"姓名":"小美","手机":"15822153326","地址":["北京市","北京市","东城区","交道口东大街1号北京市东城区","人民法院"]} {"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路13号"]} {"姓名":"小陈","手机":"13015738826","地址":["福建省","福州市","仓山区","","公园路","15号",""]}
异常处理
1、遇到前三级关键字多个字时,会报错。
2、...
最后总结
应该30小时以上了吧...
代码BUG疯狂出,做好中间程序的代码就是不会进行评测工具的测试,好多东西用也不会用,我真TM...尽力了
本来觉得吧,花上这几天而学的东西以为挺有收获的,从正则走到API调用,从只会c与c++到java第一次实际应用...可时间成本太高,效率极低,完成度差...是应该反省一下的
有些时候,其实积累跟沉淀就在那里摆着,不是几天几夜、一朝一夕就可以掩盖的...