1. 程式人生 > >用java寫wordcount

用java寫wordcount

同時 fileread iteye ron 詳細設計 sch porting 功能 如何

碼雲地址: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