前言

哈喽,我是小黑, 最近学了java的输入输出流后一直心痒痒,总想找一点事情来做,所以用java代码来实现了一下统计代码的所有行数,看一下我上大学以来到底打了多少行。

先附上实现代码吧!

package InOutStream;

import java.util.* ;

import java.io.* ;

class codeCount {

private static int count ; //统计总行数

private static int countCPP ;//CPP

private static int countJAVA ;//java

private static int countPY ;//python

private String path ; //用于接收用户输入保存代码的文件夹的路径

private int reading(String path) throws Exception { //该函数用来统计一个代码文件的行数

FileReader reader = new FileReader(path) ;

BufferedReader buffer = new BufferedReader(reader) ;

int count = 0 ;

while(buffer.readLine()!=null) {

count ++ ;

}

buffer.close() ;

reader.close() ;

return count ;

}

private void caculate(String nowpath) throws Exception{//计数函数

File nowfile = new File(nowpath) ;

if (nowfile.isFile()) {

if (nowpath.endsWith(".cpp")) {

int sum = reading(nowpath) ;

countCPP += sum ;

count += sum ;

}

else if (nowpath.endsWith(".py")) {

int sum = reading(nowpath) ;

countPY += sum ;

count += sum ;

}

else if (nowpath.endsWith(".java")) {

int sum = reading(nowpath) ;

countJAVA += sum ;

count += sum ;

}

else {

System.out.println(nowpath.substring(nowpath.indexOf("."))+":该类型文件不属于代码文件或该代码文件统计功能正在开发中,敬请期待!");

}

}

else { //如果这个路径表示的是一个文件夹,则执行递归操作

String []filesset = nowfile.list() ;

for (String i:filesset ) {

String newpath = nowpath + nowfile.separator + i ;//合成路径

caculate(newpath) ;

}

}

}

public codeCount(String src) {

path = src ;

}

public static int getLinesCPP() {

return countCPP ;

}

public static int getLinesJAVA() {

return countJAVA ;

}

public static int getLinesPY() {

return countPY ;

}

public static int getLines() {

return count ;

}

public void caculator() throws Exception { //外界包装

this.caculate(path) ;

}

public String toString() { //重写toString方法

return "统计结果如下:\n" +

"cpp行数:\n"+countCPP +

"\njava行数:\n"+countJAVA +

"\npython行数:\n"+countPY ;

}

}

public class Count{

public static void main(String []args) throws Exception {

Scanner cin = new Scanner(System.in) ;

System.out.println("请输入地址:");

String path = cin.next() ;

codeCount machine = new codeCount(path) ;

machine.caculator();

System.out.println(machine.toString());

cin.close();

}

}

实例:

我在桌面保存了一个文件夹用来保存代码:

打开后是这个样子:

取路径:

运行程序,将路径粘贴到程序之内

结果如下!!!

这就是所有代码拉!!如果你有其他什么实现方法或者意见或者建议,欢迎在评论区中提出来哦!

ps:由于我只学了c、cpp、java、python。所以代码中只针对这几种进行了统计,欢迎您修改代码来满足您的需求!!

总结

到此这篇关于利用Java简单实现一个代码行数统计器的文章就介绍到这了,更多相关Java实现代码行数统计器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java 方法数统计_利用Java简单实现一个代码行数统计器方法实例相关推荐

  1. java 对象复制 反射_利用Java反射机制实现对象相同字段的复制操作

    一.如何实现不同类型对象之间的复制问题? 1.为什么会有这个问题? 近来在进行一个项目开发的时候,为了隐藏后端数据库表结构.同时也为了配合给前端一个更友好的API接口文档(swagger API文档) ...

  2. java mysql jdbc 封装_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)...

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  3. java界面设计股票_利用JAVA实现股票交易系统设计参考.doc

    利用JAVA实现股票交易系统设计参考 目 录 摘要1 关键词1 Abstract2 Key words2 1 概述3 1.1 Java体系结构3 1.2 Java的优点3 1.3 Java的应用3 2 ...

  4. java 网络流量统计_【Java】人流量统计-动态版之摄像头识别显示

    [Java]人流量统计-动态版之视频转图识别请访问 http://ai.baidu.com/forum/topic/show/940413 本文是基于上一篇进行迭代的.本文主要是以摄像头画面进行人流量 ...

  5. java calendar日期计算_利用Java中Calendar计算两个日期之间的天数和周数

    前言 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历.阴(农)历之分.它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每 ...

  6. java 获取文件名长度_利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性...

    利用Java文件类File的方法,获取磁盘文件的文件名.长度.大小等特性. 如题,大神们谁可以编写一个这样的java程序?     happy530755 | 浏览 1482 次 |举报 我 ...

  7. java日期相差周_利用Java中Calendar计算两个日期之间的天数和周数

    前言 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历.阴(农)历之分.它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每 ...

  8. java 生成pdf 乱码_利用java处理fop导出pdf的中文乱码问题解决方案

    本文的作用是,生成带中文的加密pdf格式的文件,防止被人修改. 在项目下建立docbook-xsl, fo-res, out, sample四个文件夹 docbook-xsl目录: 放从sourcef ...

  9. python打印长方形_利用python打印出菱形、三角形以及矩形的方法实例

    前言 本文主要给大家介绍了关于利用python打印出菱形.三角形以及矩形的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍: 实例代码 #coding:utf-8 rows = int ...

最新文章

  1. python统计列表内元素个数
  2. ASP.NET MVC中实现多个按钮提交的几种方法
  3. 属实逼真,决策树可视化!
  4. linux mysql 系统时间函数吗_Linux 宝库 - Mysql日期和时间函数不求人
  5. 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?
  6. 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
  7. mpvue中使用vant-weapp
  8. [SHELL] LAMP一键安装脚本设计(v2.1)
  9. sqlserver text最大长度_1156. 单字符重复子串的最大长度
  10. js中引用类型赋值(拷贝)问题
  11. e7用什么主板_主板当中的纽扣电池有什么用?电池没电了会怎样?
  12. Windows 上安装 Scala
  13. VIVADO 安装教程
  14. 思科模拟器Cisco Packet Tracer的下载与安装
  15. 【微软内推】微软2023届校园招聘开始啦
  16. 副业该怎么选择,适合新手的四个副业项目,零基础也可操作的兼职
  17. 实现极致节能,维谛技术(Vertiv)有哪些特殊技能?
  18. 洛谷4208 最小生成树计数
  19. 红旗 Linux 桌面操作系统 11 来了
  20. System.Data.SqlClient.SqlException:“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 S

热门文章

  1. python字符 * 和 ** 的拆包(打散)功能
  2. 浅聊JavaScript中的回调函数
  3. JVM 参数-Xmn 设置年轻代的大小 一般使用默认值
  4. CC2541_Key部分理解
  5. 软件实习项目二:贪吃蛇的游戏开发
  6. 如何借助 chatGPT 改善您的 SEO
  7. App对接工行e支付开发流程
  8. easygui安装教程
  9. maven中用dom4j解析xml文档
  10. cadence SPB17.4 - allegro - WARNING: Unsupported curve-fit, spline, or 3D POLYLINE