学的不好  请各位大侠多多指教呀

解决方案 »

  1.   

    我倒是写过解析代码的,你这种计算行数貌似需要比较良好的格式才好。
    按行读取行,如果line.reqlaceAll("\\s").equals("")那么就表示为空行
    如果读到/*那么表示为注释开始直到*/为结束。或者读到//表示这行之后都为注释。
    其余剩下的就是代码了
      

  2.   


    private int rowNumber;
    BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("path")));
    while(br.readLine()!=null){
    rowNumber++;
    }
    System.out.println(rowNumber);
      

  3.   

    大一时候用C写过,那是没学过java和正则表达式,写起来比较麻烦,现在找不到源码了,用java加上正则表达式弄齐来比较简单了注释就有"//""/*************/"
    "/*
      *
     /"这几种,空行就读取每一行让 然后str.trim().equals("")就行
      

  4.   

    import java.io.*;
    public class FileDemo {
    public static void main(String[] args) throws Exception {
    File f=new File("d:"+File.separator+"aa.txt");
    FileReader s=new FileReader(f);
    BufferedReader br=new BufferedReader(s);
    int WordCount=0;
    int lineNum=0;
    int SpaceCount=0;
    String str="";
    //按行读取
    while((str=br.readLine())!=null){
    WordCount+=str.length(); //字数等于读取到的每行的个数累加
    lineNum++;  //行数累加
    char[] c=str.toCharArray();//打散字符串成单个字符并放入数组
    //遍历数组,判断数组中的元素是否等于空,是则数量累加
    for(int i=0;i<c.length;i++){
    if(c[i]==' ')
    {
    SpaceCount++;
    }
    }
    }
    System.out.println("行数"+lineNum);
    System.out.println("空格数"+SpaceCount);
    System.out.println("字数"+WordCount);


    }}
      

  5.   

    如果有如下注释,注释嵌套在一起,因此,在统计注释数目时,就要忽略任何一个注释中的任意内容(例如/*)
    所以在统计时,要匹配到以下两项:注释开头和注释结尾/*
      * /**
      * //注释内容中有两个斜杠
      * /*注释内容中有一个斜杠和星号
      * /前提:Java源码中的注释是完整的,既有开头,又有结尾
    (1)如果要统计java源代码中的注释数目,每次读取一行,
    (2)一直到,在某一行中出现"//"或"/*"或"/**",若同时出现三个中的两个或者全部,以最前面的为注释开头;
    (3)然后接着逐行读取源码内容,忽略注释中的内容;
    (4)一直到,在某一行中出现与前面注释开头对应的注释结尾,若同时出现多个,以最后面的为注释结尾;
    (5)这就是一个完整的注释,然后在表示注释数目的变量上 +1;
    (6)重复此过程,一直到,文件读取到尽头
    附://比较特殊,若//为注释开头,则它没有对应的注释结尾,应该直接 +1