import java.io.*;public class Counter {
  private int files = 0;
  private int size=0;
  private int count = 0;
  private int rem = 0;
  private int code = 0;
  private int empty = 0;  public Counter(File f) {
    count(f);
  }  private void count(File f) {
    if (f.isFile()) {
      countFile(f);
    }
    else {
      File[] list = f.listFiles();
      for (int i = 0; i < list.length; i++) {
        count(list[i]);
      }
    }
  }  private void countFile(File f) {
    if (f.getName().toLowerCase().endsWith(".java")) {
      files++;
      size+=f.length();
      try {
        BufferedReader br = new BufferedReader(new FileReader(f));
        String s = null;
        boolean isrem = false;
        int k1,k2,k3,k4;
        while ( (s = br.readLine()) != null) {
          s = s.trim();
          count++;
          if(s.length()==0){
            empty++;
            continue;
          }
          k1=s.indexOf("/*");
          k2=s.lastIndexOf("*/");
          k3=s.indexOf("//");
          if(isrem){
            if(k2!=-1){
              isrem=false;
              if(k2!=s.length()-1){
                code++;
              }
            }
            rem++;
          }
          else{
            if(k1==0){
              isrem=true;
              rem++;
              continue;
            }
            else if(k1>0){
              isrem=true;
              rem++;
              code++;
              continue;
            }
            if(k3==0){
              rem++;
              continue;
            }
            else if(k3>0){
              rem++;
              code++;
              continue;
            }
            code++;
          }
        }
      }
      catch (Exception ex) {ex.printStackTrace();}
    }
  }  public static void main(String[] args) {
    File f = new File(
        "D:\\李劲\\ccats\\java\\src\\com\\ccats\\help");
    Counter c = new Counter(f);
    System.out.println("File :" + c.getFiles());
    System.out.println("Size :" + c.getSize());
    System.out.println("Count :" + c.getCount());
    System.out.println("Rem :" + c.getRem());
    System.out.println("Code :" + c.getCode());
    System.out.println("Empty :" + c.getEmpty());
  }  public int getCode() {
    return code;
  }  public int getCount() {
    return count;
  }  public int getRem() {
    return rem;
  }  public int getFiles() {
    return files;
  }  public int getEmpty() {
    return empty;
  }
  public int getSize() {
    return size;
  }}
自己修改吧

解决方案 »

  1.   

    谢谢,flyxxxxx(灭神) ,太谢谢了。我修改一下。
    对了,再问一下,在这里怎么结分啊?
      

  2.   

    程序输出
    根据命令行参数不同,可以分别得到下面两种输出:
    1. 纯文本输出。
    2. HTML表格输出。
    具体输出的格式由程序员从用户角度考虑,自行设计。
    其他要求
    1. 易于扩充:程序未来可能需要扩充,比如其他输出格式。还有人能帮忙解决一下吗, 这个做不出来。