day20结业练习 -> java基础大神进阶学习总结之19天(知识点全面覆盖,细节)

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;
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41340417/article/details/107892683