個人作業
一、預估與實際
| PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
| --------------------------------------- | -------------------------------- | -------- | -------- |
| Planning | 計劃 | 695 | 860 |
| • Estimate | • 估計這個任務需要多少時間 | 695 | 860 |
| Development | 開發 | 695 | 860 |
| • Analysis | • 需求分析 (包括學習新技術) | 120 | 140 |
| • Design Spec | • 生成設計文檔 | 20 | 30 |
| • Design Review | • 設計複審 | 30 | 40 |
| • Coding Standard | • 代碼規範 (為目前的開發制定合适的規範) | 30| 40 |
| • Design | • 具體設計 | 80 | 100 |
| • Coding | • 具體編碼 | 270 | 310 |
| • Code Review | • 代碼複審 | 30 | 40 |
| • Test | • 測試(自我測試,修改代碼,送出修改) | 35 | 45 |
| Reporting | 報告 | 25 | 35 |
| • Test Repor | • 測試報告 | 20 | 25 |
| • Size Measurement | • 計算工作量 | 15 | 25 |
| • Postmortem & Process Improvement Plan | • 事後總結, 并提出過程改進計劃 | 20 | 30 |
| | | 合計 | 860 |
二、需求分析
我通過百度和朋友的方式了解到,國小一、二年級數學有如下的幾個特點:
- 1.一年級隻有0-100以内的加減法運算;
- 2.一年級加減法運算結果不會為負數;
-
3.二年級乘除運算結果都為正數;
經過分析,我認為,這個程式應當:
- 一年級加減法運算結果都為正整數;
- 二年級乘除運算隻有在1-9以内的運算,不能為0;
三、設計
1. 設計思路
使用者輸入的參數,需要判斷是否符合要求,不符合就直接結束運算,符合就繼續判斷。
根據輸入的參數,随機生成加減乘除運算,運算需要符合國小一二年級的算術規則,
加法不能大于100,減法不能小于0,乘除不能為0,最後要有檔案的生成與寫入。
2. 實作方案
寫出具體實作的步驟
- 實作方案
- 準備工作:先在Github上建立倉庫,克隆到本地...
- 輸出out.txt檔案
- 如何用指令行輸出參數
四、編碼
- 用args[0]和args[1]數組來實作從指令行中接收到的參數
- 用Random來生成随機數
1. 調試日志
- 如果數組越界,就擴大數組;
- 無法用指令行直接傳參,用args數組解決;
- 不會将運算後的結果寫入txt檔案裡,經過百度以後找到了解決辦法;
- 發生過題号都是1,原因是沒有循環變量i或者j++;
- 本來題目是數量是10,運作後隻輸出5套題,原因是用了同一個循環變量i來統計題号和參與循環,導緻集合越界。
- ArrayList集合中變量都為String類型,int類型的變量需要先強制轉換成String類型。
2. 關鍵代碼
>public static void h(ArrayList<String> list) { // 建立一個方法用來專門輸出
int i = 0;
File toFile = new File("out.txt");
PrintStream ps = null;
OutputStream os = null;
try {
// ps=new PrintStream(toFile);//可直接傳File
os = new FileOutputStream(toFile, false);// true在原檔案上追加
ps = new PrintStream(os, true);// true自動重新整理
for (i = 0; i <= 2*n- 2; i = i + 2) {
ps.println(list.get(i));
}
ps.println();
for (i = 0; i <= 2*n - 2; i = i + 2) {
ps.print(list.get(i));
ps.println(list.get(i + 1));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
ps.close();
}
}
建立out.text檔案,把題目和答案存入txt檔案中。
3. 代碼規範
- 采用四個空格縮進,不能使用tab鍵
- 一些模糊的變量需要用//xxxxxxxxxxxxxxxx來備注,以便知道變量代表的什麼意思
- 同一個類中避免出現相同的字母變量
- 盡量使用if{}else,不要一直if去判斷
- 變量都需要先賦予初始值
- 在集合ArrayList中都要用String類型,将int類型強制轉換成String類型。
五、測試
- 輸入:100 2 輸出結果: 100道國小二年級的乘除算法題目
- 輸入:a100 2 輸出結果: 輸入有誤
- 輸入:1000 1 輸出結果: 1000道國小一年級的加減算法題目
- 輸入:100 a1 輸出結果:輸入有誤
- 輸入:100 2 2 輸出結果: 輸入有誤
六、總結
- 需要養成代碼縮進的好習慣;
- 寫代碼的格式很不規範,需要慢慢實踐改善;
- 平時不常敲代碼,對JAVA的一些基礎知識的了解還有些欠缺,這次的很多不了解的地方經過朋友和百度的幫助下,解決了很多問題;
- 拿到項目前一定要先分析需求,構思好大緻方向,才能高效率敲好代碼。
- 下次我會繼續努力,day day up!