最近在学Java,遇到不会的习题,网上找都找不到比较简单的解决办法,可能大神们的时间都比较珍贵吧,自己研究花了不少哦时间,想想还是把一些习题答案分享出来,帮助和我一样的初学者。
如标题所示,读取一个Java源程序,找到其中用到的关键字,并统计其个数。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class calculate {
public static void main(String[] args) throws IOException {
File file=new File("src/ch6/calculate.java");
FileReader f=new FileReader(file);
String s="";
int ca,count=0;
while((ca=f.read())!=-1) {
s+=(char)ca;
}
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"};
String all[]=s.split("[ \t\\(\\)]");
for(String info:all)
{
System.out.println(info);
for(String keyword:KEYWORDS) {
if (info.equals(keyword))
count++;
}
}
System.out.println(s);
System.out.println(count);
}
}
解释几点
一、这里是用的关键字数组我也是网上找的,不知道全不全。
二、这里唯一的难点是用正则表达式进行split,我这里是根据对源代码的观察,以回车、空格、左右括号为分隔符对字符串进行分割,/t代表回车,Java正则没有深入了解,个人理解,一个\代表Java编辑器的转义,用于像\t这种,因为在python中/t语义不同,进行编辑器转义后像其他语言一样还需要一个\进行转义,这就是要用\(这样的原因,其它的都比较简单了。