import java.io.BufferedReader
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.util.HashMap
import java.util.Map
import java.util.Set
public class JavaCodeAnalyzer {
public static void analyze(File file) throws IOException{
//FileOutputStream fos = new FileOutputStream("F"+File.separator+"result.txt")
if(!(file.getName().endsWith(".txt")||file.getName().endsWith(".java"))){
System.out.println("输入的分析文件格式不对!")
}
InputStream is= new FileInputStream(file)
BufferedReader br= new BufferedReader(new InputStreamReader(is))
String temp
int count=0
int countSpace=0
int countCode=0
int countDesc=0
Map<String, Integer> map = getKeyWords()
while((temp=br.readLine())!=null){
countKeys(temp, map)
count++
if(temp.trim().equals("")){
countSpace++
}else if(temp.trim().startsWith("/*")||temp.trim().startsWith("//")){
countDesc++
}else{
countCode++
}
}
System.out.printf("代码行数:"+countCode+"占总行数的%4.2f\n",(double)countCode/count)
System.out.printf("空行数:"+countSpace+"占总行数的%4.2f\n",(double)countSpace/count)
System.out.printf("注释行数:"+countDesc+"占总行数的%4.2f\n",(double)countDesc/count)
System.out.println("总行数:"+count)
System.out.println("出现最多的5个关键字是:")
System.out.println("")
System.out.println("")
System.out.println("")
System.out.println("")
System.out.println("")
}
public static void main(String[] args) {
getKeyWords()
File file = new File("F://Test.java")
try {
analyze(file)
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace()
}
}
public static Map<String,Integer> getKeyWords(){
Map<String,Integer> map = new HashMap<String, Integer>()
String[]keywords = {"abstract","assert","boolean","break","byte","case","catch","char","class","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"," strictfp","short","static","super"," switch","synchronized","this","throw","throws","transient","try","void","volatile","while","goto","const"}
for(String s:keywords){
map.put(s, 0)
}
return map
}
public static void countKeys(String s,Map<String,Integer> map){
Set<String> keys = map.keySet()
for(String ss:keys){
if(s.indexOf(ss)!=-1){
map.put(ss, map.get(ss)+1)
}
}
}
}
上班没啥时间了,还有点没写完,你在想想。
1、拿到代码查看项目当中是否有readme这样的文件,如果没有查看是否有文档之类的2、代码当中没有文档,那么就想你的同事或者其他人要这个框架的介绍或者资料
3、先请教别人这个框架的大体思路
4、自己独立去按照文档或者其他人说的思路去看代码
5、不懂的地方全部记录下面,一次行去问,有的时候很多问题在你看到后面的东西的时候就自然明白了
6、看懂了代码之后自己尝试着写一个,看自己的理解是否正确就这么多了。