一个简单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简易小程序。

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

一个基于java实现的代码计数器相关推荐

  1. 一个基于Java的syslog服务器,大家都来看看啊!

    一个基于Java的syslog服务器 前言 前期准备 功能效果图 接收到的数据只能输出到控制台的问题解决方法 具体代码 结语 前言 当时接到要开发syslog功能时,我的表情是这样的- 啥是syslo ...

  2. 帮我写一个基于java的朗读器可以自动分析本文情感的代码

    很高兴为您服务.这里是一段基于Java的朗读器代码,它可以自动分析本文情感: import java.io.File; import java.io.FileInputStream; import j ...

  3. 手把手教你搭建一个基于Java的分布式爬虫系统

    http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...

  4. vba数组dim_NDArray — —一个基于Java的N-Dim数组工具包

    vba数组dim 介绍 (Introduction) Within many development languages, there is a popular paradigm of using N ...

  5. 如何做一个基于JAVA房产中介预约看房系统毕业设计毕设作品(springboot框架)

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):基于JAVA的网站开发属于B/S架构(即浏览器和服务器架构模式),架构如图 分析系统功能 ...

  6. 如何做一个基于JAVA失物招领网站系统毕业设计毕设作品(springboot框架)

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):基于JAVA的网站开发属于B/S架构(即浏览器和服务器架构模式),架构如图 分析系统功能 ...

  7. 如何做一个基于JAVA二手交易网站系统毕业设计毕设作品(springboot框架)

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):基于JAVA的网站开发属于B/S架构(即浏览器和服务器架构模式),架构如图 分析系统功能 ...

  8. 如何做一个基于JAVA餐厅座位预定系统毕业设计毕设作品(springboot框架)

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):基于JAVA的网站开发属于B/S架构(即浏览器和服务器架构模式),架构如图 分析系统功能 ...

  9. 如何做一个基于JAVA景点景区售票系统毕业设计毕设作品(springboot框架)

    分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式):基于JAVA的网站开发属于B/S架构(即浏览器和服务器架构模式),架构如图 分析系统功能 ...

最新文章

  1. libcurl选项CURLOPT_WRITEDATA中的“坑”
  2. android学习从模仿开始 —— 模仿UI 导航帖
  3. redis分片_5000+字硬核干货!Redis 分布式集群部署实战
  4. 查看服务器物理内存大小,如何看服务器的物理内存大小
  5. Docker 精通之 Dockerfile
  6. 干掉 BeanUtils!试试这款 Bean 自动映射工具,真心强大!
  7. 8个必备的Python GUI库
  8. .net知识和学习方法系列(三)CSharp中控件台的输入输出
  9. Bus Hound 的使用方法
  10. 数据科学、机器学习和数据挖掘的差异
  11. Python正态性检验
  12. LFS8.0完全安装搭建制作教程
  13. 暴走P图APP隐私政策
  14. java jsp使用flash播放mp4,(jsp/html)网页上嵌入播放器(常用播放器代码整理)
  15. Webpack5快速入门 (二) CSS相关loader的使用及兼容性处理 手把手带你打开前端工程化的大门
  16. 计算机中完成全选的快捷键,怎么全选-很实用!word中全选的快捷键介绍及使用方法...
  17. css实现icon动画效果
  18. 配置NTP服务ntpd/ntp.conf
  19. Linux 计算机网络 从 ping 来初窥计算机网络
  20. windows计算器_如何使用Windows 10计算器

热门文章

  1. 基本数据类型python_Python中的基本数据类型
  2. 为什么专业领域里外行领导能让墙倒屋塌?
  3. docker下Gitlab如何进行备份恢复与迁移?
  4. 安静,是一个人最有力量的时候
  5. 让猛男害羞的AI特效,女友们纷纷笑成了开水壶;李逵、关羽:这是我???...
  6. grub4dos puppy linux,Grub2引导硬盘上的puppy linux的问题
  7. 顺丰科技2018校园招聘在线笔试题
  8. 5个技巧打造令人印象深刻的LOGO
  9. 吴军,阅读与写作,18,如何写好简历
  10. SwitchHosts——便捷切换hosts