1、Github项目地址
https://github.com/migu-6127/20177651
2、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | |||
Estimate | |||
Development | |||
Analysis | |||
Design Spec | |||
Design Review | |||
Coding Standard | |||
Design | |||
Coding | |||
Code Review | |||
Test | |||
Reporting | |||
Test Repor | |||
Size Measurement | |||
Postmortem & Process Improvement Plan | |||
合计 |
3、解题思路
- 首先将它拆分为四个模块,命令行传参、读取文件、对数据进行操作、写入文件。
- 在针对每个模块查阅相关资料(百度解决一切~)。
- 在一步步实现每个模块。
- 最后将四个模块组合到一起。(哎~说起来简单,但这两周...窝都快愁秃了)
4、实现过程
-
实现命令行传参这一模块,考虑到主函数中太多操作会比较混乱,所以我是设计了一个LoadArgs()实现命令行传参。具体实现是用到了Switch分支结构判断字符。
-
然后就是读取文件转换为二位数组进行操作了,读取文件我是参照了网上实现的,至今也没整明白字节流,字符流有是什么意思...
-
第三步就是对二维数组进行数独操作了,嗯...这部分我也卡了很久...本来是想定义两个标志数组对0的元素行和列不为0的数进行标记,在排除得出这个位置的值...但木有成功...最后还是参照了某位刘大佬的方法实现的。(基于我技术太差....只能实现三宫格的...)
-
最后就是将填完的二维数组写入到文件中。
单元测试
5、改进程序性能
下面这张图片对我来说简直就像是天书...再一看代码,满框的红,我实在不知道从何下手...o(╥﹏╥)o
6、关键代码
(实现数独部分的代码就不拿出来了,实在是太废柴了...丢人)
对于我来说,这次的关键代码应该是读取文件跟写入文件了...所以这里就拿出来献丑吧....
/*
* 读取文件
*/
public static void readFile() throws Exception{
/*
* 相对路径
* */
File file=new File(inputpath);
/*
*字节流
*/
FileInputStream fileInputStream = null;
fileInputStream = new FileInputStream(file);
/*
* 读取文件内容
* */
Scanner sc = new Scanner(fileInputStream);
for (int i = 0; i < m*n; i++) {
for (int j = 0; j < m; j++) {
/*
取字符存入二维数组中
*/
arr[i][j] = sc.nextInt();
}
}
}
/*
* 写入文件
*/
public static void writeFile() throws Exception{
File writername = new File(outputpath);
/*
*字符流
*/
FileWriter writer = new FileWriter(writername);
/*
输出流对象
*/
BufferedWriter out=new BufferedWriter(writer);
for (int i = 0; i < m*n; i++) {
for (int j = 0; j < m; j++) {
out.append(arr[i][j]+" ");
}
/*
txt中
才是换行
*/
out.write("
");
if((i-(m-1))%m==0) {
out.write("
");
}
}
/*
把缓冲区内容压入文件
*/
out.flush();
/*
关闭文件
*/
out.close();
}
仅支持三宫格,命令行输入以及结果如下图
7、心里路程与收获
别问!问就是崩溃!满脸问号,我到底是个什么废柴...
构建之法?我看!我一定去看!
刚拿到题目,命令行输入是什么?数独怎么解?怎么读取文件?怎么写入文件?
百度~疯狂百度...
被百度到一个方法...奥...试试...完了不行没得用...继续百度...
无限循环...脑袋炸裂...最后把自己绕晕了...
刚不过...我承认我就是个辣鸡...我就实现三宫格还不行嘛
最后还是选择一步步慢慢来,结合之前百度到的知识点,一点点梳理,一点点尝试...
首先命令行输入...什么?jdk运行版本与编译版本不匹配无法运行?检查了环境配置以及修改了项目jdk之后....
什么?找不到或无法加载主类?百度百度百度...n个小时以后...原来必须要在包含.class文件的文件夹内运行...
然后读取文件...此处省略n个小时..
数独盘处理...我是谁?我在哪?我要干什么?我从哪开始?
春去秋来...年复一年...终于看到了希望...
最后代码规约检测..性能分析...单元测试...上传代码...
虽然这两周在无止境崩溃中...但不得不承认的是...也学到了不少知识
也深刻地认识到我就是个渣渣!