用java写wordcount

Posted ye_you

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java写wordcount相关的知识,希望对你有一定的参考价值。

1.码云地址:https://gitee.com/Huan62201/events; 

2.个人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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3、功能需求分析

  WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。

可执行程序命名为:wc.exe,该程序处理用户需求的模式为:wc.exe [parameter] [input_file_name]

 存储统计结果的文件默认为result.txt,放在与wc.exe相同的目录下。

4. 作业详情https://edu.cnblogs.com/campus/xnsy/2018Systemanalysisanddesign/homework/2152

5.程序设计

 A:大概设计

(1):程序由主函数和方法构成。

(2):程序使用main的入口参数。

B:详细设计

(1):将每个指令对应一个方法。

(2):将功能方法写在一个主函数的方法里。

(3):使用条件判断语句来处理输入的命令。

6.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();
    }
}

7.测试用例

1.在命令行执行程序

用例测试结果

8.参考链接

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

9.总结

  这是第一次写这样的项目,遇到过很多问题,因为之前从来没有操作过Java代码打包成exe运行,打包过程中查了很多资料,所以放了几个我个人觉得很有用的资料上来,希望对后面的人来说有帮助,这个还是存在一些问题。这方面的问题还是需要之后慢慢解决。

以上是关于用java写wordcount的主要内容,如果未能解决你的问题,请参考以下文章

用Spark写一个简单的wordcount词频统计程序

spark 例子wordcount topk

FlinkFlink基础之WordCount实例(Java与Scala版本)

wordCount实例在java上演示

spark java 示例代码wordcount

WordCount