day20结业练习 -> java基础大神进阶学习总结之19天(知识点全面覆盖,细节)
程序员文章站
2024-03-08 18:26:05
...
java基础总结
java基础Ended-------补充一个综合练习(个人所写供参考学习)
在开发中使用比较多的还是字节和字符流的读写操作,务必要非常熟练,再体会一下六字箴言(读进来,写出去),到底有何深意。
综合练习题:做一个统计代码行数的程序,扫描一个目录能统计出该目录中包括所有子目录中所有Java文件的行数,不统计空行。
public class totalJava {
public static int Total = 0; //总共多少行
public static int Dan = 0; //单行注释
public static int Duo = 0; //多行注释
public static int importJava = 0; //包,导入相关
public static void main(String[] args) throws FileNotFoundException {
/* 综合练习题:做一个统计代码行数的程序,
扫描一个目录能统计出该目录中包括所有子目录中所有Java文件的行数,不统计空行*/
File file = new File("D:\\WorkSpace\\idea-workspace");
int total = getLine(file,0,0);
System.out.println("总行数:"+total);
System.out.println("有效代码:"+(total - importJava - Dan -Duo));
System.out.println("单行注释:"+Dan);
System.out.println("多行注释:"+Duo);
System.out.println("包的声明已经导入包:"+importJava);
}
static public int getLine(File file, int linCount,int total) throws FileNotFoundException {
//判断该文件是否为文件夹,或者目录
if (file.isDirectory()){
//是文件夹的话,拿到所有该文件夹下的文件
File[] all_file = file.listFiles();
for (File f : all_file) {
//递归拿取每个文件(直到不是文件夹)
getLine(f,linCount,total);
}
//不是文件夹,则开始计算该文件的行数
}else {
//记录每个java文件总代码行数
int count = 0;
//记录每个java文件的单行注释
int DanCount = 0;
//记录每个java文件的多行注释
int DuoCount = 0;
//记录每个java文件的导入包
int Import = 0;
//判断该文件是否为java文件
if((file.getName().contains(".java"))){
FileInputStream fileInputStream = new FileInputStream(file);
Scanner scanner = new Scanner(fileInputStream);
while (scanner.hasNext()){
String line = scanner.nextLine();
//总行
if (!"".equals(line.trim()) && line.trim().length() > 0 && line !=null){
System.out.println("该java文件的第"+count+"行"+"代码:"+line);
count++;
}
//包,导入相关
if (line.contains("package") || line.contains("import")){
Import++;
}
//单行注释
if (line.contains("//")){
DanCount++;
}
//多行注释
if (("/*").equals((line.trim())) || ("*/").equals(line.trim())){
DuoCount++;
}
//多行注释
if (line != null && line.trim().length() > 0 && "*".equals((line.trim()).charAt(0) ) ){
DuoCount++;
}
}
}
Total +=count;
importJava += Import;
Dan += DanCount;
Duo += DuoCount;
}
return Total;
}
}