• Word Count


     

    【项目概述】

       worldCount是一个统计文件字符数的经典程序,这个项目就是用java语言来实现worldCount的功能,该程序可以通过图形界面选择文件,并对文件的字符数,单词数,行数以及注释等进行统计。

    【实现思路】

          该程序的主要思路就是先通过窗口选择一个文件,将该文件传递给相关处理方法,用字符缓存流来读取文件,然后readline()方法逐行读取文件,再将每一行的内容赋予一个字符数组,遍历该数组,通过一定的判断语句来统计其中的字符,单词以及注释的数量,最后输出到窗口

    【主要代码】

    1、读取文件

    //通过JFileChooser控件选择文件
    JFileChooser jfc = new JFileChooser();
    /*
    ...
    */ //创建一个File类对象 File file
    = jfc.getSelectedFile(); //读取文件 FileReader in = new FileReader(file); BufferedReader buffer = new BufferedReader(in);

    2、统计数量

    /*
             * 注释行标记,用以标注该行是否为注释行(用以标注"/* * /"注释)
             */
            boolean blNote1 = false;
            while ((temp = buffer.readLine()) != null
                    || (temp = buffer.readLine()) == "
    ") {
                char ch[] = temp.toCharArray();
                int chLength = temp.length();
    
                /*
                 * 空行标记,用以标注该行是否为注释行(用以标注/*注释)
                 */
                boolean blNullLine = true;
                /*
                 * 注释行标记,用以标注该行是否为注释行(用以标注"//"注释)
                 */
                boolean blNote = false;
    
                /*
                 * 遍历该行的字符元素
                 */
                for (int j = 0; j < chLength; j++) {
    
                    /*
                     * 遍历该行时,除了末尾换行符,字符数均加一
                     */
                    if (ch[j] != '
    ') {
                        charNum++;
                    }
                    /*
                     * 统计空格数
                     */
                    if (ch[j] == ' ') {
                        spaceNum++;
                    }
                    /*
                     * 统计单词数(每一个非英文字母字符之前的字符视为一个单词,每一行末如果为字母视为有一个单词),并标记该行为非空行
                     */
                    if (j > 0) {
                        if ((Character.isLetter(ch[j - 1]) && !Character
                                .isLetter(ch[j]))
                                || ((j == (chLength - 1) && Character
                                        .isLetter(ch[j]))))
                            wordNum++;
                        blNullLine = false;
                    }
                    /*
                     * 统计注释行数
                     */
                    if (j < chLength - 1) {
                        
                        //当两个连续的字符为“//”时,标注该行为注释行(因为“//”为单行注释,所以在每行遍历开始时置blNote为false)
                        if (ch[j] == '/' && ch[j + 1] == '/') {
                            
                            blNote = true;
                            continue;
                        }
                        //当两个连续的字符为“ /* ” 时,则视为一个注释的开始,从该行起标注blNote1为true,即为注释行,直至出现"*/"的行为止
                        if (ch[j] == '/' && ch[j + 1] == '*') {
                            
                            blNote1 = true;
                            continue;
                        }
                        if (ch[j] == '*' && ch[j + 1] == '/') {
                        
                            noteNum++;
                            blNote1 = false;
                        }
                    }
    
                }
    
                if (blNullLine) {
                    nullLineNum++;
                }
                if (blNote || blNote1) {
                    noteNum++;
                }
                lineNum++;
            }

    【软件截图】

    选择文件:

    显示统计数据:

    gtihub地址::https://github.com/1850252892/WC.git

  • 相关阅读:
    树莓派设置CPU运行的核心数为3,保留核心4号
    node+egg中mongdb的一些知识点
    如何提高前端的技能和快速涨薪?
    【安全认证】我的CISSP达成之路
    前端gitLab ci/cd搭建
    flutter调试
    js rgb hex hsv色值转换
    Error waiting for a debug connection: The log reader stopped unexpectedly
    Flutter滑动列表实现
    前端异常监控
  • 原文地址:https://www.cnblogs.com/yyxxn/p/7599707.html
Copyright © 2020-2023  润新知