201621123053 张雨阳软工作业2
1.碼云項目地址
https://gitee.com/milan_kaka/2018_soft_work/tree/master
2.PSP表格
| Planning | 計劃 | 30 | 50 |
| · Estimate | 明確需求和其他相關因素,估計每個階段的時間成本 | 20 | 40 |
| Development | 開發 | 300 | 780 |
| · Analysis | 需求分析 (包括學習新技術) | 60 | 120 |
| · Design Spec | 生成設計文檔 | 30 | 60 |
| · Design Review | 設計復審 | 30 | 60 |
| · Coding Standard | 代碼規范 | 15 | 20 |
| · Design | 具體設計 | 120 | 150 |
| · Coding | 具體編碼 | 180 | 200 |
| · Code Review | 代碼復審 | 30 | 40 |
| · Test | 測試(自我測試,修改代碼,提交修改) | 100 | 120 |
| Reporting | 報告 | 60 | 60 |
| · | 測試報告 | 30 | 100 |
| · | 計算工作量 | 20 | 20 |
| · | 并提出過程改進計劃 | 20 | 20 |
3.解題思路描述
題目要求實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,并能夠快速地處理多個文件。思路如下
4.設計實現過程
建三個類,分別是WordCounter類(統計方法),FileDeal(文件處理)和Main(主函數)。
WordCounter類中主要方法如下
FileDeal類中主要方法如下
Main函數主調用前面兩個類的方法,實現程序功能。
5.代碼說明
(1). 統計字符個數 public int getCharCount()
public int getCharCount() //統計字符個數,按ASCⅡ碼來統計 {char a;for (int i = 0; i < text.length(); i++) {a = text.charAt(i);if (a >= 48 && a <= 57 ||a >= 65 && a <= 90 ||a >= 97 && a <= 122) {charNum++;}}return charNum; }將text中的字符單獨取出放到a中,若a中字符符合規范,則charnum+1,否則繼續遍歷text直到結束。
(2). 統計單詞總數 public int getWordCount()
public int getWordCount() // 統計單詞總數(注意單詞是以4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫。){String t = text;String[] Word = t.split("\\s"); // 對字符串進行分詞操作(注意\\s)for (int i = 0; i < Word.length; i++) {if (Word[i].length() < 4) { // 判斷長度是否大于等于4continue;} else {int flag = 1; // 判斷字符串的前四位是否是英文字母char a;for (int j = 0; j < 4; j++) {a = Word[i].charAt(j);if (!(a >= 'A' && a <= 'Z' || a >= 'a' && a <= 'z')) {flag = 0;}}if (flag == 1) {wordCount++;}}}return wordCount;}先將text進行分詞操作。用到split("\s")方法。再判斷字符串是否符合單詞要求(單詞:以4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫。) 如果符合,wordCount+1,否則繼續遍歷直到結束。
(3). 統計單詞個數 public Map getWordFreq()
public Map getWordFreq() // 統計單詞個數{wordFreq = new HashMap<String, Integer>();String t = text;String[] Word = t.split("\\s"); for (int i = 0; i < Word.length; i++) {if (Word[i].length() < 4) { continue;} else {int flag = 1; char a;for (int j = 0; j < 4; j++) {a = Word[i].charAt(j);if (!(a >= 'A' && a <= 'Z' || a >= 'a' && a <= 'z')) {flag = 0;}}if (flag == 1) {Word[i] = Word[i].trim().toLowerCase(); // 將字符串轉化為小寫if (wordFreq.get(Word[i]) == null) { // 判斷之前Map中是否出現過該字符串wordFreq.put(Word[i], 1);} elsewordFreq.put(Word[i], wordFreq.get(Word[i]) + 1);}}}return wordFreq;}開始的操作和上一個方法相似,找出符合單詞描述的字符串,存放到Map中,若沒存過就記為1,若存過+1。
(4). 統計有效行數 public int getLineCount()
public int getLineCount() { // 統計有效行數String[] line = text.split("\r\n");=for (int i = 0; i < line.length; i++) { if (line[i].trim().length() == 0)continue;LineCount = LineCount + 1;}return LineCount;}以行為單位分割text,之后檢驗是否有只含空格或換行的無效行。若不是無效行+1。
6.單元測試
對于單元測試還是沒有完全的理解。不知道怎么去編寫測試代碼。在詢問和借鑒了別的同學后還是有問題。
7.效能分析
JProfiler安裝后全英文有些看不懂。。
8.實驗總結
轉載于:https://www.cnblogs.com/ACmilan1899kaka/p/9664229.html
總結
以上是生活随笔為你收集整理的201621123053 张雨阳软工作业2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 页面从输入 URL 到页面加载显示完成
- 下一篇: 一些喜欢的句子~