WordCount
李成洪的github
一..需求說(shuō)明
1.基本需求
? ?輸入:txt文件
? ?輸出:將txt文件中的字符數(shù)、單詞數(shù)、行數(shù),統(tǒng)計(jì)結(jié)果以指定格式輸出到默認(rèn)文件
2.輸入輸出以及計(jì)算規(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
? ? ?空格,水平制表符,換行符,均算字符。
? ? ?由空格或逗號(hào)分割開(kāi)的都視為單詞,且不做單詞的有效性校驗(yàn),例如:thi#,that視為用逗號(hào)隔開(kāi)的2個(gè)單詞。
? ? ?-c, -w, -l參數(shù)可以共用同一個(gè)輸入文件,形如:wc.exe –w –c file.c 。
? ? ?-o 必須與文件名同時(shí)使用,且輸出文件必須緊跟在-o參數(shù)后面,不允許單獨(dú)使用-o參數(shù)。?
3.PSP
| PSP2.1 | PSP階段 | 預(yù)估耗時(shí) (分鐘) | 實(shí)際耗時(shí) (分鐘) |
| Planning | 計(jì)劃 | 400 | ? |
| · Estimate | · 估計(jì)這個(gè)任務(wù)需要多少時(shí)間 | 350 | ? |
| Development | 開(kāi)發(fā) | 50 | ?60 |
| · Analysis | · 需求分析 (包括學(xué)習(xí)新技術(shù)) | 40 | 90 |
| · Design Spec | · 生成設(shè)計(jì)文檔 | ?30 | ?60 |
| · Design Review | · 設(shè)計(jì)復(fù)審 (和同事審核設(shè)計(jì)文檔) | ?30 | ?30 |
| · Coding Standard | · 代碼規(guī)范 (為目前的開(kāi)發(fā)制定合適的規(guī)范) | ?20 | ?30 |
| · Design | · 具體設(shè)計(jì) | ?30 | 40 |
| · Coding | · 具體編碼 | ?60 | 120 |
| · Code Review | · 代碼復(fù)審 | ?30 | ?20 |
| · Test | · 測(cè)試(自我測(cè)試,修改代碼,提交修改) | ?40 | 60 |
| Reporting | 報(bào)告 | ?20 | 80 |
| · Test Report | · 測(cè)試報(bào)告 | ?20 | ?0 |
| · Size Measurement | · 計(jì)算工作量 | ?370 | ? |
| · Postmortem & Process Improvement Plan | · 事后總結(jié), 并提出過(guò)程改進(jìn)計(jì)劃 | ?30 | ? |
| ? | 合計(jì) | ?400 | ?590 |
4.思路
? 通過(guò)java的輸入輸出流讀寫(xiě)文件,遍歷文件中的每一個(gè)字符判斷其中的空格數(shù),換行健,逗號(hào),分好的數(shù)目來(lái)統(tǒng)計(jì)。
5.類(lèi)
? 1.Util 工具包類(lèi)提供文件的讀寫(xiě)
? ?2.WordCount類(lèi) 判斷文件中的字符數(shù),行數(shù),單詞數(shù)
? ?3.CountPrintl類(lèi) 將結(jié)果打印到指定的文件中
? ?4.Test類(lèi) 單元測(cè)試類(lèi)
? ?5.Client 客戶(hù)端?
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 {//工具類(lèi) 負(fù)責(zé)讀寫(xiě)工具/*讀取文件* 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();// 讀寫(xiě)文件的工具對(duì)象/** 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++)// 最后一個(gè)字母特殊考慮 {if (words.charAt(i) == ' ' || words.charAt(i) == ';' || words.charAt(i) == ',' || words.charAt(i) == '.')// 出現(xiàn)空格逗號(hào)句號(hào)分號(hào)都算一個(gè)單詞 {wordNum++;}}wordNum++;// 最后一個(gè)不管是什么字母結(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ù)輸入的命令獲取操作,和文件路徑最后計(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"://計(jì)算字符數(shù) {charNum=cWord.countChar(path);System.out.println("字符數(shù)為:"+charNum);break;}case "-w"://計(jì)算單詞數(shù) {wordNum=cWord.countWord(path);System.out.println("單詞數(shù)為:"+wordNum);break;}case "-l"://計(jì)算行數(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="字符的個(gè)數(shù)為"+charNum+"\n單詞的個(gè)數(shù)為"+wordNum+"\n行數(shù)為"+enterNum;wdUtil.fileWrite("result.txt", txt);}}?
測(cè)試總結(jié):1.我不知道table在計(jì)算的時(shí)候是算一個(gè)字符還是多少個(gè),我電腦上算的3個(gè)
? ? ? ? ? ? ? ? ? 2.在計(jì)算單詞時(shí)我覺(jué)得以分號(hào),逗號(hào),句號(hào),空格結(jié)尾都應(yīng)該算一個(gè)單詞
? ? ? ? ? ? ? ? ? 3.在文章結(jié)尾應(yīng)當(dāng)默認(rèn)增加一個(gè)單詞
7.相關(guān)鏈接
? ?有關(guān)博客的使用和排版,:http://www.cnblogs.com/math/p/se-tools-001.html。?
? ? 有關(guān)Git的使用,廖雪峰的官方網(wǎng)站。? ? ??
8.最后
? ?非常感謝老師給我們的引導(dǎo),我一直知道git很神奇也很好用。但是迫于害怕和沒(méi)有機(jī)會(huì),一直沒(méi)有實(shí)踐過(guò),謝謝老師給我的資料和實(shí)踐的機(jī)會(huì)。本次博客寫(xiě)的有點(diǎn)匆忙,有不足之處請(qǐng)多多指教。
?
轉(zhuǎn)載于:https://www.cnblogs.com/c-lover/p/9694191.html
總結(jié)
- 上一篇: 证同测试
- 下一篇: 01.Python基础-3.集合容器