【项目概述】
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