第二次作业(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的方式有哪些,怎么才能转目标程序转换成可执行文件