java源代码分析 实在是不太会,求高手教教我。

Java源代码分析程序类型:验证型、探索型目的:初步掌握运用面向对象方法编写应用程序,掌握类、对象、封装等;了解并应用Java语言的字符串处理、文本文件的读写内容:1.背... Java源代码分析程序
类型:验证型、探索型
目的:初步掌握运用面向对象方法编写应用程序,掌握类、对象、封装等;了解并应用Java语言的字符串处理、文本文件的读写
内容:
1.背景描述:
(1) Java语言共有50个关键字(自行查找相关文档)。
(2) Java源程序是以“.java”为扩展名的文本文件。
(3) 可以考虑在Java源程序中的行共有3种:
<1> 代码行,可运行的Java源代码;
<2> 注释行,3种注释均可;
<3> 空行,既无代码,也无注释;
(4) 行的特殊情况:
<1> 如下情况,可以认为是代码行为1,注释行为0或代码行和注释行均为1。
int number; //number表示人数
<2> 如下情况,可以认为是代码行为1,注释行为1或代码行为1,注释行为2。
int number; /* number为整型
表示人数*/
<3> 假设被分析程序源码无其他特殊情况,如:
int /*人数*/ number;

2. 项目名和类名为JavaCodeAnalyzer,主类名等其他类名自行定义。

3. 实现功能:
(1) JavaCodeAnalyzer类以一个Java源程序文件名和一个存储结果的文本文件名创建一个对象。如果文件不存在,或对应的扩展名不是“.java”和“.txt”,应提示文件错误;
(2) 对输入的源程序文件进行分析其中的:代码行数、注释行数和空行数。说明:行是指以回车结束的。
(3) 统计并按从多到少输出出现次数最多的5个关键字及其出现次数。
(4) 统计分析的结果输出到存储结果的文本文件中,输出内容如下:

分析XXXXX.java源程序的结果:
代码行数:xxx,占xx.xx%
注释行数:xxx,占xx.xx%
空白行数:xxx,占xx.xx%
源程序总行数:xxxx

出现最多的5个关键字是:
关键字1:xx次
关键字2:xx次
关键字3:xx次
关键字4:xx次
关键字5:xx次

分析时间:年-月-日,时-分-秒
展开
 我来答
Lee小店
推荐于2016-05-13 · TA获得超过1265个赞
知道小有建树答主
回答量:767
采纳率:0%
帮助的人:368万
展开全部
package test2;

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);
            }
        }
    }
}

上班没啥时间了,还有点没写完,你在想想。

wust07
2013-11-07 · TA获得超过123个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:159万
展开全部
Read Write Map Date
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友75191b9
2013-11-07
知道答主
回答量:22
采纳率:100%
帮助的人:10.6万
展开全部
要求写的很清楚了,按要求一条条就好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式