C#源代码统计程序

题目:给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数。

【1】定义一个文件操作接口(FileInterface.java):

import java.io.File;
interface FileInterface {
public void computing(File file) ;
}

 【2】 
定义一个实现文件接口的Computer类(Computing.java:): 

import java.io.File; 
import java.io.BufferedReader; 
import java.io.FileReader;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
//定义一个实现文件接口的Computer类
public class Computing implements FileInterface{

    //声明代码行数变量
    private static int daima = 0 ; 
     //声明空白行数变量    
    private static int nothing = 0;  
    //声明注释行数变量
    private static int explain= 0;  
   
   //定义computing方法,对文件进行操作,读取文件计算文件空白行数、注释行数、代码行数
   public  void computing(File file) {
       BufferedReader buf = null;   
       boolean comment = false;   //定义一个boolean标记对象,对注释行进一步判断
       try {   
           buf = new BufferedReader(new FileReader(file));  //创建一个字符输入处理流对象对文件进行操作
           try {   
               comment = judging(buf,comment);   //调用判断文件的方法
           } catch (IOException e) {   
                   e.printStackTrace();     
           }
       }catch (FileNotFoundException e) {   
               e.printStackTrace(); 
       }finally {   
      if (buf != null) {   
          printResult(buf);   //调用统计输出结果的方法
          }   
     }   
   }
   //文件判断方法
   private boolean judging(BufferedReader buf, boolean comment) throws IOException {
                        String line = "";   
while ((line = buf.readLine()) != null) {   //读取一行
   line = line.trim();   //去掉左右空格及空字符
   if (line.matches("")) {   //判断是否为空格或者空字符,是的话空白行数加1
    nothing++;   
   } else if (line.startsWith("/*") && !line.endsWith("*/")) {   //判断是否为注释行,是的话注释行数加1
    explain++;   
       comment = true;   
   } else if (true == comment) {   
    explain++;   
       if (line.endsWith("*/")) {   
           comment = false;   
       }   
   } else if (line.startsWith("//")) {   
    explain++;   
   } else {   //以上判断都不是的话就为代码行数加1
    daima++;   
   }   
}
return comment;
}
//统计结果输出方法
private void printResult(BufferedReader buf) {
try {   
//输出空行数
      System.out.println("空行数:"+nothing);  
 //输出注释行数
      System.out.println("注释行数:"+explain);   
 //输出代码行数
      System.out.println("代码行数:"+daima);  
//输出文件总行数
      System.out.println("文件总行数:"+(nothing+explain+daima));
      buf.close();   //关闭BufferedRead流
      buf = null;   
        } catch (IOException e){   
           e.printStackTrace();   
       }
}
}
【3】 定义主函数,调用Computer类相关方法(Main_Java .java:):

import java.io.File;
//定义主函数,调用Computer类相关方法
public class Main_Java { 
    public static void main(String[] args) { 
    File f = new File("E:" + File.separator + "javaComputing.java");  
        Computing com = new Computing() ;
        com.computing(f) ;
    }
}

【4】程序运行结果:







评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值