PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 100 | |
• Estimate | • 估計這個任務須要多少時間 | 10 | 10 |
Development | 開發 | ||
• Analysis | • 需求分析 (包括學習新技術) | 30 | 30 |
• Design Spec | • 生成設計文檔 | 30 | 70 |
• Design Review | • 設計複審 | 10 | 10 |
• Coding Standard | • 代碼規範 (爲目前的開發制定合適的規範) | 10 | 20 |
• Design | • 具體設計 | 20 | 20 |
• Coding | • 具體編碼 | 500 | 300 |
• Code Review | • 代碼複審 | 20 | 100 |
• Test | • 測試(自我測試,修改代碼,提交修改) | 200 | 300 |
Reporting | 報告 | ||
• Test Repor | • 測試報告 | 40 | 100 |
• Size Measurement | • 計算工做量 | 15 | 10 |
• Postmortem & Process Improvement Plan | • 過後總結, 並提出過程改進計劃 | 50 | 100 |
合計 | 1170 |
· 數學一年級下學期 第五單元測試題
· 兩位數減兩位數 不退位減
· 兩位數減兩位數(退位減)
· 兩位數加兩位數(進位加)
· 兩位數加兩位數(不進位加)
· 兩位數減一位數(退位)
· 兩位數加一位數(進位)
· 兩位數減一位數、整十數(不退位)
· 小括號
· 兩位數加一位數、整十數(不進位)
· 整十數加、減整十數
· 整十數加、減整十數java
· 萬之內的加法和減法
· 求比一個數多幾的應用題
· 不連續進位加
· 連續進位加
· 加法的驗算
· 萬之內的加法和減法算法
程序運行中、文件輸出後要給明確的提示編程
寫出具體實現的步驟數組
查閱別人的博客並無找到帶括號的四則運算。而後我就先試着生成隨機的沒有括號的四則運算,完成任務後我再考慮如何加上括號,設計了很久終於加了一些if判斷而且生成了帶括號的四則運算了。app
解決:這是我本次開發浪費最多時間調試的bug。緣由知道後其實很簡單,字符串轉字符我沒用str.toCharrArrays()這個方法,而是本身開闢一個char[100],默認溫馨化是0。當遍歷字符串末尾的時候天然就躍界報錯了。dom
解決:當時在這個地方也困擾了我好久,一步步的增長判斷,隨機安排括號,因爲很差控制括號出現的位置我調試了好久才生成帶括號的四則運算函數
public static StringBuffer init3(String[] args) throws Exception { int m = 1; int l = 1; String str = null; // 生成2個字符串用於拼接題目和答案 StringBuffer strbuf = new StringBuffer(); StringBuffer strbuf1 = new StringBuffer(); StringBuffer strbuf2 = new StringBuffer(); // random用於隨機生成題目中的操做數 int random = 0; // int flag=5; // 將四種運算符放入數組 String[] strop = { "+", "-", "x", "÷" }; // 將隨機生成的2-4個運算符存入ostr數組 String[] ostr = new String[4]; int w = Integer.valueOf(args[args[0].equals("-n") ? 1 : 3]); for (int i = 0; i < w; i++) { // 隨機生成的2-3個運算符 int operator = (int) (Math.random() * 3) + 2; int k = 0; // 隨機生成運算符號(至少有2種不一樣運算符號) for (int j = 0; j < operator; j++) { k = (int) (Math.random() * 4); ostr[j] = strop[k]; if (operator == 2 && j == 1) { // 控制在只有2個運算符的狀況下2個運算符號必定不一樣 while (ostr[0] == ostr[1]) { k = (int) (Math.random() * 4); ostr[0] = strop[k]; } } } int flag1 = 1; int flag = 1; for (int j = 0; j < operator + 1; j++) { if (operator == 4) // 若是運算符有+-就自動生成括號運算符 if (j < operator && (ostr[j].equals("+") || ostr[j].equals("-")) && flag == 1) { strbuf.append("( "); flag = 0;// 判斷是否加了左括號0表明已近加了 flag1 = 0;// 判斷是否能夠加右括號了 } random = (int) (Math.random() * 101); if (j == operator) { // 最後一個隨機數的末尾不加空格 if (flag == 0 && flag1 == 1) { strbuf.append(random + " )"); flag1 = 0; flag = 100; } else { strbuf.append(random); if (flag == 0) { // 在最後一個數後面加上右括號 flag1 = 1; } } } else { if (flag == 0 && flag1 == 1) { strbuf.append(random + " )" + " "); flag1 = 0; flag = 100; } else { strbuf.append(random + " "); if (flag == 0) { // 在下一次循環當中能夠加入右括號 flag1 = 1; } } } if (j < operator) strbuf.append(ostr[j] + " "); } l = 1; // 從新初始化數組 ostr = new String[4]; // MathExam mathExam = new MathExam(); mathExam.Init(); str = strbuf.toString(); char[] charArray = str.toCharArray(); double shuntYardAlgo = mathExam.ShuntYardAlgo(charArray); String vf = String.valueOf(shuntYardAlgo); boolean matches = vf.matches("\\d+.[0]?"); if (matches) { // strbuf2用於拼接題目 strbuf2.append("(" + m + ")" + " " + strbuf + "\r\n"); // strbuf1用於拼接答案 strbuf1.append("(" + m + ")" + " " + strbuf + " " + "=" + " " + (int) shuntYardAlgo + "\r\n"); m++; l = 0; } strbuf = new StringBuffer(); if (l != 0) i--; } strbuf2.append("\r\n"); strbuf2.append(strbuf1); return strbuf2; }
請給出本次實驗使用的代碼規範:單元測試
測試 | 預期結果 | 實際結果 | |
---|---|---|---|
不輸入參數 | -grade和-n標識符錯誤!! | -grade和-n標識符錯誤!! | |
只輸入一個參數:100 | -grade和-n標識符錯誤!! | -grade和-n標識符錯誤!! | |
-n 10 -grade 1 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-n 10.5 -grade 1 | 請輸入正整數 | 請輸入正整數 | |
-n ascc -grade 2 | 請輸入正整數 | 請輸入正整數 | |
-n 10 -grade vsdv | 年級參數錯誤,只能在[1~3]之內 | 年級參數錯誤,只能在[1~3]之內 | |
-n 00001 -grade 3 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-n 1000 -grade 2.3 | 年級參數錯誤,只能在[1~3]之內 | 年級參數錯誤,只能在[1~3]之內 | |
-n 10 -grade 002 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-n 10000 -grade 3 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-n -1 -grade 3 | 請輸入正整數 | 請輸入正整數 | |
1000 -n -grade 2 | -grade和-n標識符錯誤!! | -grade和-n標識符錯誤!! | |
-n 10 -grade -3 | 年級參數錯誤,只能在[1~3]之內 | 年級參數錯誤,只能在[1~3]之內 | |
-n 1000 2 -grade | -grade和-n標識符錯誤! | -grade和-n標識符錯誤! | |
-grade 2 -n 1000 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-grade 0.1 -n 800 | 年級參數錯誤,只能在[1~3]之內 | 年級參數錯誤,只能在[1~3]之內 | |
-grade a1 -n 10 | 年級參數錯誤,只能在[1~3]之內 | 年級參數錯誤,只能在[1~3]之內 | |
-grade 001 -n 20 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-grade 1 -n 0000000002 | 題目已經生成,詳情請見out.txt | 題目已經生成,詳情請見out.txt | |
-grade 0.1 -n 0.1 | 請輸入正整數 | 請輸入正整數 | |
-n a1 -grade a1 | 請輸入正整數 | 請輸入正整數 |