天天看點

個人作業1

個人作業

一、預估與實際

| 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. 實作方案

寫出具體實作的步驟

  1. 實作方案
  • 準備工作:先在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!