WordCount
李成洪的github
一..需求說明
1.基本需求
? ?輸入:txt文件
? ?輸出:將txt文件中的字符數(shù)、單詞數(shù)、行數(shù),統(tǒng)計結(jié)果以指定格式輸出到默認(rèn)文件
2.輸入輸出以及計算規(guī)定
? ? ? wc.exe -c file.c ? ? ? ? 返回文件 file.c 的字符數(shù)wc.exe -w file.c
? ? ? wc.exe -w file.c ? ? ? ?返回文件 file.c 的單詞總數(shù)
? ? ? wc.exe -l file.c ? ? ? ? 返回文件 file.c 的總行數(shù)
? ? ? wc.exe -o outputFile.txt???? //將結(jié)果輸出到指定文件outputFile.txt
? ? ?空格,水平制表符,換行符,均算字符。
? ? ?由空格或逗號分割開的都視為單詞,且不做單詞的有效性校驗,例如:thi#,that視為用逗號隔開的2個單詞。
? ? ?-c, -w, -l參數(shù)可以共用同一個輸入文件,形如:wc.exe –w –c file.c 。
? ? ?-o 必須與文件名同時使用,且輸出文件必須緊跟在-o參數(shù)后面,不允許單獨使用-o參數(shù)。?
3.PSP
| PSP2.1 | PSP階段 | 預(yù)估耗時 (分鐘) | 實際耗時 (分鐘) |
| Planning | 計劃 | 400 | ? |
| · Estimate | · 估計這個任務(wù)需要多少時間 | 350 | ? |
| Development | 開發(fā) | 50 | ?60 |
| · Analysis | · 需求分析 (包括學(xué)習(xí)新技術(shù)) | 40 | 90 |
| · Design Spec | · 生成設(shè)計文檔 | ?30 | ?60 |
| · Design Review | · 設(shè)計復(fù)審 (和同事審核設(shè)計文檔) | ?30 | ?30 |
| · Coding Standard | · 代碼規(guī)范 (為目前的開發(fā)制定合適的規(guī)范) | ?20 | ?30 |
| · Design | · 具體設(shè)計 | ?30 | 40 |
| · Coding | · 具體編碼 | ?60 | 120 |
| · Code Review | · 代碼復(fù)審 | ?30 | ?20 |
| · Test | · 測試(自我測試,修改代碼,提交修改) | ?40 | 60 |
| Reporting | 報告 | ?20 | 80 |
| · Test Report | · 測試報告 | ?20 | ?0 |
| · Size Measurement | · 計算工作量 | ?370 | ? |
| · Postmortem & Process Improvement Plan | · 事后總結(jié), 并提出過程改進(jìn)計劃 | ?30 | ? |
| ? | 合計 | ?400 | ?590 |
4.思路
? 通過java的輸入輸出流讀寫文件,遍歷文件中的每一個字符判斷其中的空格數(shù),換行健,逗號,分好的數(shù)目來統(tǒng)計。
5.類
? 1.Util 工具包類提供文件的讀寫
? ?2.WordCount類 判斷文件中的字符數(shù),行數(shù),單詞數(shù)
? ?3.CountPrintl類 將結(jié)果打印到指定的文件中
? ?4.Test類 單元測試類
? ?5.Client 客戶端?
5.關(guān)鍵代碼
??
package Util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; public class WDUtil {//工具類 負(fù)責(zé)讀寫工具/*讀取文件* FilePath 文件的路徑* 返回 StringBuffer*/public String fielRead(String FilePath) {File file=new File(FilePath);StringBuffer sb=new StringBuffer();try {FileInputStream fis=new FileInputStream(file);InputStreamReader reader = new InputStreamReader(fis, "UTF-8");while(reader.ready()){sb.append((char)reader.read());}reader.close();fis.close();} catch (Exception e) {e.printStackTrace();}return sb.toString();}/** FilePath 保存文件的路徑* txt 保存的內(nèi)容*/public void fileWrite(String FilePath,String txt){File file=new File(FilePath);try {FileOutputStream fop=new FileOutputStream(file);OutputStreamWriter writer =new OutputStreamWriter(fop, "utf-8");writer.write(txt);writer.close();fop.close();} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}}}?
package CountWord;import Util.WDUtil;public class CountWord {WDUtil util = new WDUtil();// 讀寫文件的工具對象/** path 文件的路徑 返回文件的總字?jǐn)?shù)*/public int countChar(String path) {int charNum = 0;String words = util.fielRead(path);charNum = words.length();return charNum;}/** path 文件的位置 返回文件中空格的數(shù)目*/public int countWord(String path) {int wordNum = 0;String words = util.fielRead(path);for (int i = 0; i < words.length() - 1; i++)// 最后一個字母特殊考慮 {if (words.charAt(i) == ' ' || words.charAt(i) == ';' || words.charAt(i) == ',' || words.charAt(i) == '.')// 出現(xiàn)空格逗號句號分號都算一個單詞 {wordNum++;}}wordNum++;// 最后一個不管是什么字母結(jié)尾,單詞數(shù)都加1return wordNum;}public int countEnter(String path) {int wordNum = 0;String words = util.fielRead(path);for (int i = 0; i < words.length(); i++) {if (words.charAt(i) == '\n') {wordNum++;}}return wordNum + 1;} } package CountWord;import java.util.Scanner;import Util.WDUtil;/** 根據(jù)輸入的命令獲取操作,和文件路徑最后計算結(jié)果保存到路徑中*/ public class PrintfCount {CountWord cWord=new CountWord();WDUtil wdUtil=new WDUtil();int charNum=0;//字符的數(shù)目int wordNum=0;//單詞的int enterNum=0;//行數(shù)public void Print(String[] args){String txt=null;String path=args[args.length-1];for(int i=0;i<args.length;i++){String operation=args[i];switch(operation){case "-c"://計算字符數(shù) {charNum=cWord.countChar(path);System.out.println("字符數(shù)為:"+charNum);break;}case "-w"://計算單詞數(shù) {wordNum=cWord.countWord(path);System.out.println("單詞數(shù)為:"+wordNum);break;}case "-l"://計算行數(shù) {enterNum=cWord.countEnter(path);System.out.println("行數(shù)為:"+enterNum);break;}case "-o":{String result=wdUtil.fielRead("result.txt");wdUtil.fileWrite(args[i+1],result);break;}}}txt="字符的個數(shù)為"+charNum+"\n單詞的個數(shù)為"+wordNum+"\n行數(shù)為"+enterNum;wdUtil.fileWrite("result.txt", txt);}}?
測試總結(jié):1.我不知道table在計算的時候是算一個字符還是多少個,我電腦上算的3個
? ? ? ? ? ? ? ? ? 2.在計算單詞時我覺得以分號,逗號,句號,空格結(jié)尾都應(yīng)該算一個單詞
? ? ? ? ? ? ? ? ? 3.在文章結(jié)尾應(yīng)當(dāng)默認(rèn)增加一個單詞
7.相關(guān)鏈接
? ?有關(guān)博客的使用和排版,:http://www.cnblogs.com/math/p/se-tools-001.html。?
? ? 有關(guān)Git的使用,廖雪峰的官方網(wǎng)站。? ? ??
8.最后
? ?非常感謝老師給我們的引導(dǎo),我一直知道git很神奇也很好用。但是迫于害怕和沒有機(jī)會,一直沒有實踐過,謝謝老師給我的資料和實踐的機(jī)會。本次博客寫的有點匆忙,有不足之處請多多指教。
?
轉(zhuǎn)載于:https://www.cnblogs.com/c-lover/p/9694191.html
總結(jié)
- 上一篇: 证同测试
- 下一篇: 中秋之晚开始 编程语言学习之路