网上见到好些
代码行数统计的软件及代码
但大多不是java实现的
又见过一道类似的面试题目
故有此想法
请大家多多发表意见建议哈
   给定多个源程序文件,统计每个源程序的物理行数、逻辑行数(非注释行)和注释行数;以及所有文件上述三种统计值的总计值。如果一行内有超过一处行内注释,则本行可以同时算作逻辑行和注释行。其中输出结果可以用.txt或者.html文件。
   对于不同的代码行进行区分;区分超过一行的注释行,并作为逻辑行和注释行来统计;对于多个文件同时进行统计,需要利用多线程。大家多指教哈。
谢啦
~!!~

解决方案 »

  1.   

    class LineCount{
        private int comnum ;
        private int allnum ;
        private int codenum;
        
        public LineCount(String path){
             init(path)
             
        }    private void init(String path){
            LineNumberReader reader = new LineNubmerReader(new InputStreamReader(new   LileInputStream(path)));
        while(!EOF){
        String line = reader.readLine();
        if( line != null ) allnum++;
        if( line.startsWith("//") || line.startsWith("/*) || line.starsWith("*"))
             comnum++;
        else
             codenum++; 
        }
       }
            
        }    public int getCodeNum(){
           return codenum;
        }    public int getTotalNum(){
           return allnum;
        }    public int getCommetNum(){
           return comnum;
        }
        }
    }我觉得使用LineNumberReader应该可以做,上面给出了对一个文件进行分析后得到行数的class,但不知道该如何确定一个文件的结束??暂时用EOF代替了,欢迎指点!
      

  2.   

    sorry, LileInputStream应该为FileInputStream, 笔误,呵呵
      

  3.   

    BufferedReader br = new BufferedReader(new FileReader(path));
    String text;
    while ((text = br.readLine()) != null) {
           do something....
    }这个应该可以的,刚才我也试着编了一下,基本功能差不多了,不过确实很麻烦,要判定的地方很多,比如:
    BufferedReader br = new BufferedReader(new FileReader("src\\learn\\Test.java"));
    String[] line = s.split("\\");
    等等,仔细想想这样的语句不少,还有没想起来的,确实够麻烦
      

  4.   

    呵呵
    楼上几位都说得很好啊 
    实现起来是麻烦
    特别是对于注是对于注释本身就有好多种
    算法实现始不难但却是麻烦哈
    不过对于多线程的设计
    要同时统计多个文件
    倒是没什么具体头绪
    难道要这个统计行数的类在 run()中产生多个对象来实现
    to:cathy97(男人练瑜伽好处多) 
    EOF判定文件的结束
    当文件读完试图再读的时候抛出异常
    倒也不错哈
    ~!!~