第二次作业(WordCount)修正版

源码地址:https://gitee.com/qlqaq/test

此次的改动在于:博客的排版,学习如何排版,另外也对代码做了一些稍微的改动,学习了博客的行文步骤,最后……总结感谢还是必须要有的!

解题思路

读完本题,可以初步的知道此题是一个关于IO的题,其次还要用到正则表达式,以及switch语句来响应输入值的不同,而执行不同的操作

此次作业只实现了基本功能,扩展功能由于时间原因就暂且搁置

需求说明

对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。
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

代码实现

数据封装操作

    private int charCount;   
     private int wordCount;   
     private int lineCount; 


    //构造方法,用于封装数据
    public WordCount(int charCount,int wordCount,int lineCount){
        this.charCount=charCount;
        this.wordCount=wordCount;
        this.lineCount=lineCount;
    }

 

统计字符操作

//统计字符,单词数,代码行数操作
    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();
    }

 

根据命令的不同而响应不同的操作

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 outTxt="";
                    for(int j=0;j<args.length;j++){
                        if(args[j].equals("-c"))
                            outTxt=outTxt+"\r\n"+inputFile+",字符数:" + WC.getCharCount();
                        if(args[j].equals("-w"))
                            outTxt=outTxt+"\r\n"+inputFile+",单词数:" + WC.getWordCount();
                        if(args[j].equals("-l"))
                            outTxt=outTxt+"\r\n"+inputFile+",行数:" + WC.getLineCount();
                    }

 

单元测试,此次采用的白盒测试法

测试统计字符

测试统计单词

测试统计行数

file.c中的内容如下:

由以上对比可知,本次测试很成功,操作与预期结果很一致!

在写此博客时出现了一些不合的数据(字符是否是英文,如果不是则存在统计不准确的情况),在这就不列举了,因为列举的话又要把正确的改成错误的,麻烦,也没有必要。

测试输出txt文件

 

 说明使用Java语言开发, 上传项目到gitee,打成jar包是基于myeclipse进行的,而把jar包变成.exe文件是基于jar2Exe做的

测试评价

此次测试还是比较成功,但也有不足,那就是做这个的时候遇到了很多bug,因为之前都没有接触过用cmd的方式进行开发一个小的demo

学到的东西也颇多,知道了如何把项目上传到gitee,以及上传到gitee的方式有哪些,怎么才能转目标程序转换成可执行文件

posted @ 2018-09-24 11:03  QAQqiulin  阅读(261)  评论(1编辑  收藏  举报