用java寫wordcount
碼雲地址:https://gitee.com/Huan62201/events;
個人PSP表格:
PSP2.1 |
PSP階段 |
預估耗時 (分鐘) |
實際耗時 (分鐘) |
Planning |
計劃 |
270 |
180 |
· Estimate |
· 估計這個任務需要多少時間 |
180 |
120 |
Development |
開發 |
580 |
400 |
· Analysis |
· 需求分析 (包括學習新技術) |
180 |
60 |
· Design Spec |
· 生成設計文檔 |
40 |
30 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
20 |
20 |
· Coding Standard |
· 代碼規範 (為目前的開發制定合適的規範) |
20 |
10 |
· Design |
· 具體設計 |
20 |
20 |
· Coding |
· 具體編碼 |
180 |
200 |
· Code Review |
· 代碼復審 |
30 |
40 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
90 |
60 |
Reporting |
報告 |
90 |
70 |
· Test Report |
· 測試報告 |
40 |
30 |
· Size Measurement |
· 計算工作量 |
20 |
10 |
· Postmortem & Process Improvement Plan |
· 事後總結, 並提出過程改進計劃 |
30 |
30 |
|
合計 |
850 |
630 |
一、功能需求分析
WordCount的需求可以概括為:對程序設計語言源文件統計字符數、單詞數、行數,統計結果以指定格式輸出到默認文件中,以及其他擴展功能,並能夠快速地處理多個文件。可執行程序命名為:wc.exe,該程序處理用戶需求的模式為:
wc.exe [parameter] [input_file_name]
存儲統計結果的文件默認為testCase.txt,放在與wc.exe相同的目錄下。
詳細:
wc.exe -c file.c //返回文件 file.c 的字符數
wc.exe -w file.c //返回文件 file.c 的單詞總數
wc.exe -l file.c //返回文件 file.c 的總行數
wc.exe -o outputFile.txt //將結果輸出到指定文件outputFile.txt
註意:
空格,水平制表符,換行符,均算字符。
由空格或逗號分割開的都視為單詞,且不做單詞的有效性校驗,例如:thi#,that視為用逗號隔開的2個單詞。
-c, -w, -l參數可以共用同一個輸入文件,形如:wc.exe –w –c file.c 。
-o 必須與文件名同時使用,且輸出文件必須緊跟在-o參數後面,不允許單獨使用-o參數。
二、程序設計
A:大概設計
1):程序由主函數和方法構成。
2):程序使用main的入口參數。
B:詳細設計
1):將每個指令對應一個方法。
2):將功能方法寫在一個主函數的方法裏。
3):使用條件判斷語句來處理輸入的命令。
三.java代碼
主要代碼
WordCount WC=new WordCount(0,0,0); String inputFile="file.c"; String stopFlie="stopFile.txt"; String outputFile="result.txt"; for(int i=0;i<args.length;i++){ if(args[i].endsWith(".c")) inputFile=args[i]; if(args[i].equals("-e")) stopFlie=args[i+1]; if(args[i].equals("-o")) outputFile=args[i+1]; } WC.wc(inputFile); for(int i=0;i<args.length;i++) { switch(args[i]){ case "-c":{ System.out.println(inputFile+",字符數:" + WC.getCharCount()); break; } case "-w":{ System.out.println(inputFile+",單詞數:" + WC.getWordCount()); break; } case "-l":{ System.out.println(inputFile+",行數:" + WC.getLineCount()); break; } case "-o":{ String outText=""; for(int j=0;j<args.length;j++){ if(args[j].equals("-c")) outText=outText+"\r\n"+inputFile+",字符數:" + WC.getCharCount(); if(args[j].equals("-w")) outText=outText+"\r\n"+inputFile+",單詞數:" + WC.getWordCount(); if(args[j].equals("-l")) outText=outText+"\r\n"+inputFile+",行數:" + WC.getLineCount(); } File writename = new File(outputFile); // 相對路徑,如果沒有則要建立一個新的output.txt文件 writename.createNewFile(); BufferedWriter out = new BufferedWriter(new FileWriter(writename)); out.write(outText); out.flush(); out.close(); break; } } } } //統計行數 public void wc(String inputFile) throws IOException{ String lineString = null; String[] buffer; File dir=new File(inputFile); BufferedReader bf = new BufferedReader(new FileReader(dir)); // 讀取文件 while((lineString=bf.readLine())!=null){ buffer=lineString.split(",| "); //遇到 , 空格 就結束賦值 for(int i=0;i<buffer.length;i++){ if(!buffer[i].equals("")) wordCount++; } lineCount++; charCount+=lineString.length(); } bf.close(); } }
四.測試用例
1.在命令行執行程序
用例測試結果
六.參考鏈接
http://lengbingteng-163-com.iteye.com/blog/1115568
Java如何讀取Resources目錄下的文件:
https://blog.csdn.net/oschina_40188932/article/details/78833754
運行exe時報錯:
http://www.cnblogs.com/smileinwind/p/9370054.html
用eclipse如何將java程序生成一個.exe可運行文件?
https://blog.csdn.net/u011677147/article/details/42262815
用java寫wordcount