一个计算代码行数的程序

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * 
 * @author jun
 *
 */
public class SumJavaCode {

 static long normalLines = 0; // 空行
 static long commentLines = 0; // 注释行
 static long whiteLines = 0; // 代码行

 public static void main(String[] args) {
  SumJavaCode sjc = new SumJavaCode();
  File f = new File("D://spring-framework-2.0-with-dependencies//spring-framework-2.0");
  System.out.println(f.getName());
  sjc.treeFile(f);

  System.out.println("空行:" + normalLines);
  System.out.println("注释行:" + commentLines);
  System.out.println("代码行:" + whiteLines);
 }

 /**
  * 查找出一个目录下所有的.java文件
  * 
  * @param f  要查找的目录
  */
 private void treeFile(File f) {

  File[] childs = f.listFiles();
  //int count = 0;
  //int sum = 0;
  for (int i = 0; i < childs.length; i++) {
   // System.out.println(preStr + childs[i].getName());
   if (!childs[i].isDirectory()) {
    if (childs[i].getName().matches(".*//.java$")) {
     System.out.println(childs[i].getName());
     //count ++; 
     sumCode(childs[i]);
    }
   } else {
    treeFile(childs[i]);
    //sum += count;
   }
  }
 }

 /**
  * 计算一个.java文件中的代码行,空行,注释行
  * 
  * @param file
  *            要计算的.java文件
  */
 private void sumCode(File file) {
  BufferedReader br = null;
  boolean comment = false;
  try {
   br = new BufferedReader(new FileReader(file));
   String line = "";
   try {
    while ((line = br.readLine()) != null) {
     line = line.trim();
     if (line.matches("^[//s&&[^//n]]*$")) {
      whiteLines++;
     } else if (line.startsWith("/*") && !line.endsWith("*/")) {
      commentLines++;
      comment = true;
     } else if (true == comment) {
      commentLines++;
      if (line.endsWith("*/")) {
       comment = false;
      }
     } else if (line.startsWith("//")) {
      commentLines++;
     } else {
      normalLines++;
     }
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } finally {
   if (br != null) {
    try {
     br.close();
     br = null;
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
}
//不知道怎么编写,网上找了很多,但是也找不到可以运行的,这里虽然找到一个,但是也不能运行。
//我找不出问题,不知道为因为什么原因,还请大神指出为什么,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
统计代码行数工具Kazoeciao.支持各种语言,需要到官网下载插件包. 官网:https://www.vector.co.jp/soft/winnt/prog/se251853.html 「かぞえチャオ!」は、ソフト開発における、規模見積りから生産性評価にまで使える非常に便利なステップカウンタです。 ソースコードのステップ数のカウントのほか、変更前後のソースコードのステップ比較、指定キーワードのカウント、市販の静的解析ツールと連携した警告数のカウントができます。 これらのカウントは、ファイル単位だけでなく、クラス単位やメソッド(関数)単位でもできます。 Shift-JIS、EUC、JIS、UTF-8、UTF-16(LE/BE)のステップカウント、ステップ比較に対応しています。 ステップ比較では、新規、修正元、修正、流用、削除ステップ数の算出ができます。 HTMLファイル内のスクリプト部分のカウントにも対応しています。 カウント結果は、CSV、HTML、TXT形式のファイルとして保存できます。 拡張子個別情報ファイルを追加することにより、さまざまな言語で記述されたプログラムのステップカウントに対応できます。 標準で、C,C++,Java,Visual Basic,MASM に対応しています。 その他の言語も、専用サイト「チャオの部屋」でサポートします。 操作は簡単!ややこしい設定は一切ありません!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值