Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)
要求:统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)
分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数。使用字符缓冲流读取文件,首先判断是否是块注释开头,接着判断是否是块注释结尾,再判断是否是单行注释或者空白行,若都不是则是有效代码,统计行数+1。
对于文件夹路径,采用递归的方法判断子条目是文件还是文件夹,是文件就调用静态统计方法。源代码:
public class CalculateRow {
public static void main(String[] args) {
/* File file = new File("D:\\web\\zuoye\\src\\test\\CalculateRow.java") ;
calculaterow(file) ;*/
File newfile = new File("D:\\web\\zuoye\\src") ;
calculateFile(newfile) ;
File[] files = newfile.listFiles() ;
/* for(File f: files){
System.out.println(f);
}*/
/* int sum = 0 ;
for (int i = 0; i < files.length; i++) {
if(files[i].isDirectory()){
File[] filesi = files[i].listFiles() ;
for (int j = 0; j < filesi.length; j++) {
int num = calculaterow(filesi[j]);
sum+=num ;
}
}else{
int num = calculaterow(files[i]);
sum+= num ;
}
}
System.out.println(newfile+"文件夹下的文件的代码行数总共有:"+sum);*/
}
public static void calculateFile(File ff){
int sum =0 ;
if(ff.isDirectory()){
File[] files = ff.listFiles() ;
for(File f1: files){
if(f1.isDirectory()){
calculateFile(f1) ;
}else{
int num =calculaterow(f1) ;
sum +=num ;
}
}
System.out.println(ff+"文件夹下的所有文件的代码行数总共:"+sum);
}else if(ff.isFile()) {
int num = calculaterow(ff) ;
sum +=num ;
System.out.println(ff+"文件下的所有文件的 代码行数总共:"+sum);
}else{
System.err.println("输入的文件地址格式不对");
}
}
public static int calculaterow(File f){
int num= 0 ;
if(f.isFile()){
try {
BufferedReader br = new BufferedReader(new FileReader(f)) ;
String str ;
boolean flag = false ;
while((str=br.readLine())!=null){
String newstr = str.trim() ;
if(newstr.startsWith("/*")){
flag =true ;
}else if (newstr.endsWith("*/")){
flag = false ;
}
else if(newstr.startsWith("//")||newstr.length()==0){
num+=0 ;
}else if(!flag){
num+=1 ;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}else {
System.out.println("不是文件!");
}
System.out.println(f+"文件的代码行数是:"+num);
return num;
}
}
截图:

Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)的更多相关文章
- 用django统计代码行数+注释行数
实现统计代码行数: 1.首先在url.py中配置 from django.conf.urls import url from django.contrib import admin from app0 ...
- Java的条件判断
以下内容引用自http://wiki.jikexueyuan.com/project/java/decision-making.html: 在 Java中有两种类型的条件判断语句,它们分别是: if语 ...
- php如何实现统计一个数字在排序数组中出现的次数(代码)
统计一个数字在排序数组中出现的次数. 博客 www.51msk.cn 1.有序的数组查找,使用二分法2.二分法查找第一次出现的位置,二分法查找最后一次出现的位置,end - start +1 left ...
- IDEA中项目src目录下无法创建java文件的问题
出现的问题如下,是因为该目录不是源码目录 解决办法 设置成功
- Qt编写自定义控件69-代码行数统计
一.前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行.注释行.代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计.写完这个工具第一件事情就 ...
- 统计C/C++代码行数
近日在写一个统计项目中C/C++文件(后缀名:C/CPP/CC/H/HPP文件)代码行数的小程序.给定包含C/C++代码的目录,统计目录里所有C/C++文件的总代码行数.有效代码行数.注释行数.空白行 ...
- Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.
Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数. 1. Kpi::: 代码行数(注释行数,空白的行数), 方法数,class数 1 2. 过滤器 ...
- Intellij idea利用Statistic插件统计项目代码行数
1 . 插件介绍统计项目中各个文件的数量,大小,行数,平均等信息根据扩展名自定义统计详细行数信息 , 包括总行数,代码行数,代码行数占比,注释行数,注释行数占比,空白行数,空白行数占比自定义选择多个文 ...
- java语言实现对程序设计语言源文件统计字符数、单词数、行数及其他拓展功。
本次作业Github项目地址:https://github.com/YiChenglong2018/WordCount 一.项目简介 本项目的需求可以概括为:对程序设计语言源文件统计字符数.单词数.行 ...
随机推荐
- 字符串处理 Codeforces Round #297 (Div. 2) B. Pasha and String
题目传送门 /* 题意:给出m个位置,每次把[p,len-p+1]内的字符子串反转,输出最后的结果 字符串处理:朴素的方法超时,想到结果要么是反转要么没有反转,所以记录 每个转换的次数,把每次要反转的 ...
- 题解报告:hdu 3549 Flow Problem(最大流入门)
Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, your t ...
- MySql数据基本操作sql语句
表字段 1>插入数据insert 如果不插入id,让id自动增加 INSERT INTO `gpw_group`(group_code, group_parent_id, group_name, ...
- LookupError: unknown encoding: idna 的处理方法
写了一个脚本,想把它打包成exe文件,在python编译器中运行正常,但是打包成.exe文件运行报错 LookupError: unknown encoding: idna 找遍资料终于找到了解决方法 ...
- NodeJS&&前端思考
做大型软件(工程化): 1.测试相关 tdd / bdd 测试覆盖率 2.规范化 standard.各种 lint.hint 3.构建相关 gulp.grunt.webpack,大量插件 4.生成器 ...
- [转]合理使用ArrayMap代替HashMap
合理使用ArrayMap代替HashMap 2016年07月08日 15:34:44 阅读数:5938 转载请标注: 披萨大叔的博客 http://blog.csdn.net/qq_27258799/ ...
- springdata-jpa 八种查询方法
使用:maven+Spring+jpa+Junit4 查询方式:SQL,JPQL查询,Specification多条件复杂查询 返回类型:list<POJO>,list<Stinrg ...
- jdbc获取数据具体过程
下面是个最简单的使用jdbc取得数据的应用.在例子之后我将分成4步,分别是①取得连接,②创建PreparedStatement,③设置参数,④执行查询,来分步分析这个过程.除了设置参数那一步之外,其他 ...
- SQL 导出csv
https://jingyan.baidu.com/album/4b07be3c466b5d48b280f37f.html?picindex=9
- tomcat 的log4j配置问题
#log4j.rootLogger=DEBUG,stdout,filelog4j.rootLogger=ERROR,stdout,filelog4j.appender.stdout=org.apach ...