精确统计代码量(Java实现)

article/2025/9/27 4:31:50

大家面试的时候有没有被问到过这样一个问题:


你的代码量是多少?


WHAT???代码量???我怎么知道,难


道要我去数吗?


下面有简便方法实现:


方法一:

利用Eclipse开发工具可以简单的统计一个项目里面的代码行数

1、如图1,选中打开的一个项目右击,选中“search”选项,出现一个弹框;


2、在图2中的弹框中,输入如下所示内容,点击“search”,就会出现结果;



3、结果如图3:




方法二:

想要精确统计代码量,去掉空白行!去掉注释!没有问题啊,下面我们就用Java来实现吧,什么都不说了,直接上代码:


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class CalculateRows {
static long classcount = 0; // Java类的数量
static long normalLines = 0; // 空行
static long commentLines = 0; // 注释行
static long writeLines = 0; // 代码行
static long allLines = 0; // 代码行
public static void main(String[] args) throws Exception {
File f = new File("D:/xampp/htdocs/Crazy"); // 目录
String type = ".java";//查找什么类型的代码,如".java"就是查找以java开发的代码量,".php"就是查找以PHP开发的代码量
CalculateRows.treeFile(f,type);
System.out.println("路径:" + f.getPath());
System.out.println(type+"类数量:" + classcount);
System.out.println("代码数量:" + writeLines);
System.out.println("注释数量:" + commentLines);
System.out.println("空行数量:" + normalLines);
if(classcount==0){
System.out.println("代码平均数量:" + 0);
}else{
System.out.println("代码平均数量:" + writeLines / classcount);
}
System.out.println("总 行数量:" + allLines);
}
/**
* 查找出一个目录下所有的.java文件
* 
* @throws Exception
*/
public static void treeFile(File f,String type) throws Exception {
File[] childs = f.listFiles();
for (int i = 0; i < childs.length; i++) {
File file = childs[i];
if (!file.isDirectory()) {
if (file.getName().endsWith(type)) {
classcount++;
BufferedReader br = null;
boolean comment = false;
br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
allLines++;
line = line.trim();
if (line.matches("^[//s&&[^//n]]*$")) {//这一行匹配以空格开头,但不是以回车符开头,但以回车符结尾
normalLines++;
} else if (line.startsWith("/*")
&& !line.endsWith("*/")) {//匹配以/*......*/括住的多行注释
commentLines++;
comment = true;
} else if (true == comment) {
commentLines++;
if (line.endsWith("*/")) {
comment = false;
}//匹配以//开头的单行注释,及以/*......*/括住的单行注释
} else if (line.startsWith("//") || (line.startsWith("/*")&&line.endsWith("*/"))) {
commentLines++;
} else {//其他的就是代码行
writeLines++;
}
}
if (br != null) {
br.close();
br = null;
}
}
} else {
treeFile(childs[i],type);
}
}
}
}

结果如下所示:





http://chatgpt.dhexx.cn/article/d61TSbxY.shtml

相关文章

描述统计 | 学习笔记 (全)

一.导论 统计学是通过收集&#xff0c;整理&#xff0c;分析&#xff0c;描述数据等手段&#xff0c;以达到推断所测对象的本质&#xff0c;甚至预测对象未来的一门综合性科学。其目的是探索数据的内在数量规律性&#xff0c;以达到对客观事物的科学认识 统计的本业是消化数据…

统计输入的个数(Java)

使用到循环结构中的while循环 public class demo {public static void main(String[] args) {//统计字符的个数//程序要读入一个正整数&#xff0c;然后输出这个整数的位数&#xff1f;//输入&#xff1a;352&#xff0c;输出&#xff1a;3.System.out.println("请输入三位…

JAVA性能统计项目

一、项目背景&#xff1a; 我们希望设计开发一个小的框架&#xff0c;能够获取接口调用的各种统计信息&#xff0c;比如&#xff0c;响应时间的最大值&#xff08;max&#xff09;、最小值&#xff08;min&#xff09;、平均值&#xff08;avg&#xff09;、百分位值&#xff0…

java中文章的阅读数统计

java中文章的阅读数统计 1.直接操作数据库进行增加操作存在问题 存在问题:每次请求都要update数据库,如果访问量大了之后,数据库存在操作压力,此时怎么办? 解决方法:1.提高数据库性能(横向/纵向拓展)2.使用缓存方式减轻数据压力 推荐使用缓存方式:优点:操作快捷,可以减轻数据…

Java Math3 Descriptive Statistics (描述性统计分析)

文章目录 1、术语2、UnivariateStatistic&#xff1a; 单变量统计分析3、Frequency distributions&#xff1a;频率分布4、Simple regression &#xff1a; 简单回归5、Multiple linear regression&#xff1a;多元线性回归6、Rank transformations &#xff1a;7、Covariance …

字符个数统计(Java实现)

描述 编写一个函数&#xff0c;计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 &#xff0c;包括 0 和 127 )&#xff0c;换行表示结束符&#xff0c;不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如&#xff0c;对于字符串 abaca 而言…

Java绘制统计图

0. 前言 本文采用第三方库xchart进行绘制&#xff0c;所需要使用的jar包如下&#xff1a; https://download.csdn.net/download/hfy1237/86508408 https://download.csdn.net/download/hfy1237/86508849 一、折线图 1. 方式一&#xff08;快速绘图&#xff09; package pl…

mysql 中文本类型有哪些_mysql数据类型有哪些

mysql数据类型有:1、数值类型;2、日期和时间类型;3、字符串类型是CHAR、VARCHAR、BINARY【二进制数据类型】、BLOB、TEXT【文本类型】、ENUM【枚举类型】和SET【数据集合】。 mysql数据类型有: MySQL支持的数据类型在几类:数值类型,日期和时间类型和字符串(字符)类型。 数…

mysql polygon 类型_MySQL数据类型 - 空间数据类型 (4)

支持的空间数据格式 有两种标准空间数据格式用于表示查询中的几何对象: ●已知文本(WKT)格式 ●已知二进制(WKB)格式 在内部,MySQL用与WKT或WKB格式不同的格式存储几何值。(内部格式类似于WKB,但有一个4个字节表示SRID。) MySQL提供函数可用于在不同的数据格式之间进行转换。…

MySQL数据类型-整数类型

MySQL提供了多种数据类型&#xff0c;包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型、二进制数据类型&#xff1b; 不同的数据类型有各自的的类型&#xff0c;使用范围也各不相同&#xff0c;而且存储方式也不相同 有两种类型的数字&#xff1a;整数和实…

MySQL 数据类型及占用空间

MySQL 数据类型 元数据 VARCHAR类型字符串及DECIMAL的占用空间实际上包含2部分&#xff0c;一是存储数据本身占用的空间&#xff0c;二是描述数据的元数据占用的空间&#xff0c;例如VARCHAR类型会使用1个字节记录存入数据实际的字符数。 最大行大小限制 MySQL表的内部表示…

Mysql数据类型与选择规则(mysql5.7)

概述 基于mysql5.7。 mysql数据类型大致可以分为四类&#xff1a;数值型、字符串型、日期和时间类型、空间类型。常用的如数值型的tinyint、int、bigint,字符串型的char、varchar、text&#xff0c;日期型的date、datetime、timestemp等&#xff0c;详细见下图&#xff1a; …

Mysql数据类型详解

1、整数类型&#xff0c;包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT&#xff0c;分别表示1字节、2字节、3字节、4字节、8字节整数。 任何整数类型都可以加上UNSIGNED属性&#xff0c;表示数据是无符号的&#xff0c;即非负整数。 长度&#xff1a;整数类型可以被指定长度…

mysql成绩是什么数据类型_mysql数据类型

1、整型 取值范围如果加了unsigned&#xff0c;则最大值翻倍&#xff0c;如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度&#xff0c;并不影响实际的取值范围&#xff0c;没有影响到显示的宽度&#xff0c;不知道这个m有什么用。 2、…

最全MySQL数据类型详解

一、概述 1、MySQL中的数据类型 2、常见数据类型的属性 二、各种数据类型精讲 1、整数类型 1.1 整数类型介绍 整数类型一共有 5 种&#xff0c;包括 TINYINT、SMALLINT、MEDIUMINT、INT&#xff08;INTEGER&#xff09;和 BIGINT。它们的区别如下表所示&#xff1a; 1.2…

mysql住址数据类型_MySql数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型&#xff0c;大致可以分为三类&#xff1a;数值、日期/时间和字符串(字符)类型。 数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERI…

不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏

文章目录 1. MySQL中的数据类型2. 整数类型3. 浮点数类型4. 定点数类型5. 位类型&#xff1a;BIT6. 日期与时间类型7. 文本字符串类型8. ENUM类型9. SET类型10. 二进制字符串类型11. JSON 类型12. 空间类型13. 选择建议 1. MySQL中的数据类型 常见数据类型的属性&#xff0c;如…

MySQL的10种常用数据类型

MySQL的数据类型 常用的数据类型有&#xff1a; 整型&#xff08;xxxint&#xff09;位类型(bit)浮点型&#xff08;float和double、real&#xff09;定点数&#xff08;decimal,numeric&#xff09;日期时间类型&#xff08;date,time,datetime,year&#xff09;字符串&…

定点数除法

定点数除法 一&#xff0c;手工除法运算方法二&#xff0c;原码除法运算方法三&#xff0c;原码加/减交替除法运算方法&#xff08;不恢复余数法&#xff09;四&#xff0c;原码加/减交替除法实现逻辑五&#xff0c;阵列除法 一&#xff0c;手工除法运算方法 图 1 图1 图1 二&…

浮点数与定点数理解、定点数转浮点数相互转换

1、浮点数理解 在平常的代码编写中大家经常用到float 32、double 64等&#xff0c;但是否有深入的去了解一下这类数据是怎么表示的呢&#xff1f;今天我们就去学习浮点数的表示方法&#xff0c;以及其优缺点。 首先浮点数为什么叫浮点数呢&#xff1f;因为浮点数的小数点的位…