源代码注释过滤器,设计要求如下:
1.采用图形用户界面进行设计。
2.能够打开java源文件,并通过编辑控件进行显示。
3.能够过滤源文件中的注释,包括/*…*/、//,并将过滤后的内容保存为java文。
谁能帮我写一份参照呀! 谢谢各位高手了!

解决方案 »

  1.   

    楼上的大侠们,评论下的太急了吧,其实滤去源码中的注释并不是一件很简单的事情。考虑这样一段代码:String s="i love java \\\\\"/* just for fun */ \\\"+"\"\\// funny2 \"\\\\"; // Real res here...请问滤去注释之后的结果应该是什么呢?这个问题需要有点文法分析的基础的。
      

  2.   


    String s="i love java \\\\\"/* just for fun */ \\\"+"\"\\// funny2 \"\\\\"; // Real res here...
     编译不会通过的,如果你想做一个注释过滤器,注释的是通过编译的源文件还是没通过的?通过编译的注释很规范按照规范查找就可以了,如果是没通过的he he,难哪,比如说您的举例,编译都通不过,通过分析貌似:String s="i love java \\\\\"/* just for fun */ \\\"+"\"\
    (// funny2 \"\\\\"; // Real res here...)--注释语句
    剔除/* */ 您这个语句就不知道是啥东东了。
    String s="i love java \\\\\"     \\\"+"\"\\
      

  3.   

    多打了一个\,所以通过不了您试试这个能不能通过?String s="i love java \\\\\"/* just for fun */ \\"+"\"\\// funny2 \"\\\\"; // Real res here...请问楼上的,注释应该怎么滤掉?
      

  4.   

    刚 入门就提 这种问题太强了 
    我还是别学java了
      

  5.   

    没人理。?我给你个算法算了,界面自己做吧import java.io.*;class Decomment {
    final boolean IN=true; 
    final boolean OUT=false; 
    boolean quote=OUT,block=OUT,line=OUT,slash=OUT; 
    public void printDecommentSource(File f){
    if(f==null)
    return;
    byte[] b=new byte[1];
    byte lastByte='\0'; 
    String s="";
    FileInputStream fis;
    try{
    fis=new FileInputStream(f); 
    while(fis.read(b)!=-1){
    if(b[0]=='"'&&lastByte=='\\'&&!slash)
    quote=!quote;
    if(b[0]=='*'&&lastByte=='/'&&!quote&&!block){
    block=IN;
    s=s.substring(0,s.length()-1);
    }
    if(b[0]=='/'&&lastByte=='*'&&!quote&&block){
    block=OUT;
    }
    if(b[0]=='/'&&lastByte=='/'&&!quote&&!line){
    line=IN;
    s=s.substring(0,s.length()-1);
    }
    if(b[0]=='\n'){
    System.out.print(s);
    s="";
    if(!quote&&line)
    line=OUT;
    }
    if(slash)
    slash=OUT;
    else if(b[0]=='\\'&&quote)
    slash=IN;
    if(!block&&!line&&!(b[0]=='/'&&lastByte=='*'))
    s+=(char)b[0];
    lastByte=b[0];
    }
    fis.close(); 
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }public class TestDecomment {
    public static void main(String[] args){
    if(args.length!=1){
    System.err.println("Usage : java TestDecomment FileName");
    System.exit(-1);
    }
    File f=new File(args[0]);
    Decomment dc=new Decomment();
    dc.printDecommentSource(f);
    }
    }