一个基于java实现的代码计数器

一个简单wc.exe小程序的java代码

首先说一下任务需求:wc.exe是一个代码计数器,通过这个计数器,我们可以清楚的判断一个c语言文件中有多少个字符,多少个单词以及一共多少行、注释行等等信息。

工具使用:

开发工具我们选用ecplise,在使用这个工具之前,我们先安装一个插件,这个插件叫做windowbuilder,通过这个插件我们可以轻松的使用gui来编辑,拖动组件,轻松经行GUI编程。效果如下:
插件情况

一个简易的GUI界面也如图,这里要说明一下,我们的jdk版本是1.8的,1.9刚出没多久,不建议大家使用,所以在这里我们就使用稳定的1.8就好了。

功能模块展示

开始界面:开始
点击选择文件就可以选择你要选取的c程序文件,当然仅限于c程序文件,如果不是,会进行提示报错。在这里我们随便选取得一个文件,结果显示:
这里写图片描述
会有提示,要你重新上传。或者给你警告告诉你,这样会存在风险,慎重考虑。
还做了一系列的逻辑判断,保证这个文件是可行的,之后贴代码再看。这里不多做解释。最后来一张图进行功能演示,选取到一个合适的文件后,便可以自动进行统计判断了。
功能
在这里还有一个完全的统计,对行数的统计。即:注释行占用了多少,占用整个文件中行数的百分比。之后点击退出便可退出这个小程序。

代码逻辑说明

这里用到了统计字符数,统计单词数量,统计行数,统计注释行等说明。统计的方法逻辑很简单,就是把对这整个文件进行IO操作,使用readline()方法,读取出来,进行判断,相关代码如下:

对文件的操作,已经封装成了一个Util的工具类。来我们先看看代码结构,由于是个小程序,我也就没太多的进行分层。
这里写图片描述

下面对这些类进行一些说明
Annontation:对是否为注释行进行判断等逻辑
FileUtil:文件操作的工具类
Line\Word:行数,字符的实体类
Main:程序的主界面,GUI
WordNumber/LineNumber:具体统计类

行数的统计:

BufferedReader reader=wj.gerReader(fileName);
            String liner=null;
            Line line=new Line();
            Annotation lj=new Annotation();

            while((liner=reader.readLine())!=null){
                if(lj.isNull(liner)){
                    line.setKhLine(line.getKhLine()+1);
                    line.setWlhLine(line.getWlhLine()+1);

                }else if(lj.simpleNote(liner)){
                    line.setZshLine(line.getZshLine()+1);
                    line.setWlhLine(line.getWlhLine()+1);

                }else if(lj.isCode(liner)){
                    line.setDmhLine(line.getDmhLine()+1);
                    line.setWlhLine(line.getWlhLine()+1);

                }else if(lj.isMuNote(liner)){
                    line.setZshLine(line.getZshLine()+1);
                    line.setWlhLine(line.getWlhLine()+1);
                }
            }

            reader.close();

字符的统计:

try {
            BufferedReader reader = fileUtil.gerReader(fileName); // 获取一个输入输出的缓冲区
            String line = reader.readLine();
            StringBuffer buffer = new StringBuffer(line);
            while(line != null){
                line = reader.readLine();
                buffer.append(line);
            }
            word.setCharNumber(buffer.length());
            line = buffer.toString();
            line.replaceAll(";", " ");
            String[] split = line.split(" ");

            if(split.length>0){
                String s = split[0];
                char c = s.charAt(0);
                if((c >= 'A' && c<='Z') || (c >= 'a' && c <= 'z') || c=='#'){ //判断是否只有一个特殊符号,如果是那就不是一个单词
                    word.setWordNumber(split.length);   
                }

            }else{
                word.setWordNumber(0);
            }       
            reader.close();  //用完这个输入输出流要关闭

其中word,Line是我封装,单词跟行数的实体类。大家可自行下载源代码来看,一会儿会贴出源代码的路径。

以上就是这个小程序的关键说明,简单易懂,到了最后,各位朋友们可以将其导出成一个可运行的jar文件,这样这个程序在任何一个装了JRE的电脑上都能运行,这就是java跨平台的一大优点。具体导出方法很简单,这里不多做说明,如有兴趣的朋友们,可下载我这个小demo来玩玩。一下便是下载地址:
wc简易小程序

辛苦码字不容易,希望大家多多留言点赞。谢谢!

猜你喜欢

转载自blog.csdn.net/dsfdasfka/article/details/82559024