資源簡介
實現一個類KeywordIdentifier,讀入一個java程序源文件,輸出各個關鍵字的個數(注意,注釋中出現的關鍵字不計入關鍵字個數)
代碼片段和文件信息
import?java.io.*;
class?KeywordIdentifier?{
????public?static?void?main(String[]?args)?throws?Exception?{
????????char[]?kc?=?new?char[800];????????????????//保存關鍵字集的字符
????????String[]?kw?=?new?String[55];??????????????//保存關鍵字
????????int?kcountkj=0; ???????????????????????//kj是關鍵字數量-1
????????char[]?s?=?new?char[10000];
????????String[]s1?=?new?String[1000];
????????int?countj=1;
????????BufferedReader?br?=?new?BufferedReader(new?FileReader(“第二題測試java源程序.java“));????//打開java源文件
????????count?=?br.read(s);
????????
????????String[]?f1?=?new?String[5];?????//輔助識別
????????char[]?sk?=?new?char[2];
????????
????????int?imnk1=0k2=0;
????????int?num[]?=?new?int[55];???????????????????//統計對應字符出現的次數
//讀入關鍵字集???????
????????BufferedReader?kbr?=?new?BufferedReader(new?FileReader(“關鍵字集.txt“));??//讀關鍵字文本文件流?????
????????kcount?=?kbr.read(kc);????????????????????????//kcount表示從文件里面讀出字符個數。
????????for?(i?=?0;?i?55;?i++)????//初始化一開始String?kw[i]有null就是犯了未初始化的錯
???????? kw[i]=““;
????????for?(i?=?0;?i????????? if(kc[i]>=‘a‘?&&?kc[i]<=‘z‘)
????????????????kw[kj]+=kc[i];
????????????else?if(kc[i+1]>=‘a‘?&&?kc[i+1]<=‘z‘){
???????????? kj++;
????????????????if(kw[kj-1]==kw[kj])?kj--;}??????????//確保第一個單詞前面的空格不影響使s1[0]==“?“
????????}
????????char?c1=‘\0‘;
/*????????System.out.print(“Java語言中所有關鍵字:“+“\n“);
????????for(i=0;i<=kj;i++)??????????????????????????????//輸出測試用的文本信息
????????????System.out.print(kw[i]+“\t“);
????????System.out.print(“\n“);*/
//我們有所有的關鍵字,現在要找出源程序中除去注釋之后的關鍵字
????????for?(i?=?0;?i?55;?i++)??????????????????//初始化?
???????? num[i]?=?0;
????????for?(i?=?0;?i?1000;?i++)?????????????//初始化化
????????????s1[i]=““;
????
????????f1[0]=“//“;?f1[1]=“/*“;?f1[2]=“*/“;?f1[3]=“/**“;????//輔助判斷
????????f1[4]=““;
????????sk[0]=‘\n‘;?
????????f1[4]+=sk[0];
????????
????????if((s[0]>=‘a‘?&&?s[0]<=‘z‘)?||?(s[0]==‘/‘)?||?(s[0]==‘*‘))
????????????s1[1]+=s[0];
????????for?(i?=?1;?i?<=?count;?i++){??????????//關鍵字肯定是小寫,所以只讀小寫單詞和注釋,換行符
???????? if((s[i]>=‘a‘?&&?s[i]<=‘z‘)?||?(s[i]==‘/‘)?||?(s[i]==‘*‘)){????? ????
???????? if((s[i]==‘/‘)?||?(s[i]==‘*‘)){
???????? if(s[i-1]>=‘a‘?&&?s[i-1]<=‘z‘)???????
???????? j++;
???????? s1[j]+=s[i];
???????? if(s1[j].equals(f1[0])){
???????????????? for(n=i+1;k1==0?&&?n?<=?count;n++){
???????????????
- 上一篇:畢業論文(jspmysql)
- 下一篇:用eclipse寫的貪吃蛇(java)
評論
共有 條評論