資源簡介
實(shí)現(xiàn)一個(gè)類KeywordIdentifier,讀入一個(gè)java程序源文件,輸出各個(gè)關(guān)鍵字的個(gè)數(shù)(注意,注釋中出現(xiàn)的關(guān)鍵字不計(jì)入關(guān)鍵字個(gè)數(shù))
代碼片段和文件信息
import?java.io.*;
class?KeywordIdentifier?{
????public?static?void?main(String[]?args)?throws?Exception?{
????????char[]?kc?=?new?char[800];????????????????//保存關(guān)鍵字集的字符
????????String[]?kw?=?new?String[55];??????????????//保存關(guān)鍵字
????????int?kcountkj=0; ???????????????????????//kj是關(guān)鍵字?jǐn)?shù)量-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];?????//輔助識(shí)別
????????char[]?sk?=?new?char[2];
????????
????????int?imnk1=0k2=0;
????????int?num[]?=?new?int[55];???????????????????//統(tǒng)計(jì)對(duì)應(yīng)字符出現(xiàn)的次數(shù)
//讀入關(guān)鍵字集???????
????????BufferedReader?kbr?=?new?BufferedReader(new?FileReader(“關(guān)鍵字集.txt“));??//讀關(guān)鍵字文本文件流?????
????????kcount?=?kbr.read(kc);????????????????????????//kcount表示從文件里面讀出字符個(gè)數(shù)。
????????for?(i?=?0;?i?55;?i++)????//初始化一開始String?kw[i]有null就是犯了未初始化的錯(cuò)
???????? kw[i]=““;
????????for?(i?=?0;?i????????? if(kc[i]>=‘a(chǎn)‘?&&?kc[i]<=‘z‘)
????????????????kw[kj]+=kc[i];
????????????else?if(kc[i+1]>=‘a(chǎn)‘?&&?kc[i+1]<=‘z‘){
???????????? kj++;
????????????????if(kw[kj-1]==kw[kj])?kj--;}??????????//確保第一個(gè)單詞前面的空格不影響使s1[0]==“?“
????????}
????????char?c1=‘\0‘;
/*????????System.out.print(“Java語言中所有關(guān)鍵字:“+“\n“);
????????for(i=0;i<=kj;i++)??????????????????????????????//輸出測試用的文本信息
????????????System.out.print(kw[i]+“\t“);
????????System.out.print(“\n“);*/
//我們有所有的關(guān)鍵字,現(xiàn)在要找出源程序中除去注釋之后的關(guā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(chǎn)‘?&&?s[0]<=‘z‘)?||?(s[0]==‘/‘)?||?(s[0]==‘*‘))
????????????s1[1]+=s[0];
????????for?(i?=?1;?i?<=?count;?i++){??????????//關(guān)鍵字肯定是小寫,所以只讀小寫單詞和注釋,換行符
???????? if((s[i]>=‘a(chǎn)‘?&&?s[i]<=‘z‘)?||?(s[i]==‘/‘)?||?(s[i]==‘*‘)){????? ????
???????? if((s[i]==‘/‘)?||?(s[i]==‘*‘)){
???????? if(s[i-1]>=‘a(chǎn)‘?&&?s[i-1]<=‘z‘)???????
???????? j++;
???????? s1[j]+=s[i];
???????? if(s1[j].equals(f1[0])){
???????????????? for(n=i+1;k1==0?&&?n?<=?count;n++){
???????????????
評(píng)論
共有 條評(píng)論