统计java源程序各个关键字个数
来源:互联网 发布:python celery mq 编辑:程序博客网 时间:2024/06/10 03:35
(菜鸟所做,高手绕道)。
习惯于C++和C,习惯于面向过程,一下子要转到面向对象,这个过程非常痛苦和不爽。
本来不想学JAVA的,但是本人选的专业课就包括java,没办法,只好硬着披头看看书。发现java很多跟C++相似,但是感觉java是彻底的面向对象,他封装好的类非常多,光看String类的文档就把我看晕了。C++思维太阻碍我对java的适应了,以至于对文件的操作看了好几遍也没看的很懂,一个简单的作业竟做了一天才做完。太菜鸟了。
由于作业要求读取一个java源程序,分析出每个关键字个数。我的第一反应就是C++的map集合,java中map分了好几个类,但是感觉没有C++的好用,在C++中会自动完成值增1所以只需要把所有的东西往map中扔就OK了,但是java中值还需要自己动手初始化、增加(我还没有体会到它的妙处吧)。
昨天家里出了点事,心情非常不开心,所以很多时候没心情看书,代码的很多细节的东西也没心情仔细看,以至于老是导致读取越界,结果就是CPU使用率达100%,动不了了。作为碰碰撞撞才做出来的作业,想想还是放出代码,希望有人指出错误。
注意,java关键字最好放在一个文本中,可以提高重复利用率。我放在数组中,后来懒得改代码了。我读取的java源程序文件用的是本程序源文件。
国际惯例,部分源码:
////***********************************************************************class KeyworldsIdentifier //统计关键字的类{//java中的关键字存放进数组中//注意,统计程序关键字时并不包括此数组中的关键字,因为“int”等字符串无法用正则表达式区分出关键字来String KEYWORDS[]={"abstract","assert","boolen","break","byte","case","catch","char","class","const","continue","default","do","double","else","enum","extends","final","finally","float","for","if","implements","import","instanceof","int","interface","long","native","new","package","private","protected","public","return","short","static","strictfp","super","switch","synchrpnized","this","throw","throws","transient","try","void","volatile","while"};TreeMap < String,Integer > keycode = new TreeMap < String , Integer > ();String Keys[];//用于存放正则表达式划分出来的字符串String Lineword = null;//用于存放从文件中读进的每一行字符串int ChildStrNum;//每一行字符串的子字符串个数int num3 = 0;//用于统计关键字的总个数void Handle(BufferedReader StringBuff)throws IOException{for ( int k=0; k<KEYWORDS.length; k++)//将java数组中的关键字放进集合中{keycode.put(KEYWORDS[k], new Integer(0));}while ((Lineword=StringBuff.readLine())!= null){Keys=Lineword.trim().split(" ");//去掉前导空格,根据正则表达式以空格划分字符串ChildStrNum=Keys.length;//每一行字符串的子字符串个数for( int j=0;j<ChildStrNum;j++){if (keycode.containsKey(Keys[j])){num3++;Integer number3=(Integer)keycode.get(Keys[j]);//获取集合中关键字已有的个数keycode.put(Keys[j], new Integer(number3.intValue()+1));//关键字个数增1}}}}void Print()//输出关键字统计信息{System.out.println("\n该文件关键字个数为:"+num3);System.out.println("每个关键字个数为:");Iterator iter3=keycode.keySet().iterator();int m=0;//用作换行while (iter3.hasNext()){Object temp3=iter3.next();//获取迭代器所指向的对象if (keycode.get(temp3)>0){m++;System.out.print(temp3.toString()+":"+keycode.get(temp3)+" ");if(m%10==0)System.out.println();}}}}
- 统计java源程序各个关键字个数
- Java 统计各个单词的个数并排序
- 统计字符串中各个字符的个数
- 统计字符串中各个字符的个数
- 统计字符串中各个字符的个数
- 统计字符串中,各个字符的个数
- Java统计单词个数
- C语言统计源文件关键字的个数
- PHP基础15-统计关键字个数
- 【字符串操作】03.统计字符串中各个字符的个数
- 4.统计和打印出各个字符的个数。
- C++统计输入字符串各个大写字母的个数
- 统计列表中各个元素的个数并输出
- 统计文件里各个字母出现的个数
- 【Java字符串高效率】统计单词统计个数
- Java-NowCoder-字符个数统计
- java--------------华为--------------------字符个数统计
- 定义文件流对象,统计字符个数(C/C++源程序)
- ABAP-SAP的Selection屏幕的事件处理顺序
- wordpress源码解析-目录结构-文件调用关系(1)
- 编程实现生产者消费者问题
- 基于模型的测试(二)
- FriendlyARM tiny6410 一步一步学与思(4)---NFS搭建
- 统计java源程序各个关键字个数
- Oracle查询所有序列
- Java 解决大数问题 (hdu 1002 hdu 1212 )
- 【thinkphp3.x】thinkphp3.x中R方法调用其它控制器中的操作方法
- Asp.Net 运行原理,个人拙见。
- 在XAMPP里建立简单的数据库
- mysql乱码修改my.ini方法不起作用
- 关于XML的解析
- weblogic配置小总结