查找.java文件中的条件

时间:2017-03-05 11:54:05

标签: java stringtokenizer

我试图创建一个方法来查找.java文件中的所有条件(我假设该文件只包含正确的指令)。 它应该计算所有" if",而不是那些被评论所附带或作为字符串处理的。 我试着用StringTokenizer来解决这个问题,但是我不知道在" //"标志和字符串与" "。有可能以这种方式实现这个问题吗?

public int getIfCount()
{
    int counter = 0;
    String t = "";

    try 
    {
        FileReader file = new FileReader(path);

        StringBuffer sb = new StringBuffer();

        int tmp;

        while ((tmp = file.read()) != -1)
        {
            sb.append((char)tmp);
        }

        t = sb.toString();

        StringTokenizer stk = new StringTokenizer(t);

        String token;


        while (stk.hasMoreTokens())
        {
            token = stk.nextToken();

             if (token.contains("/*"))
            {
                while (stk.hasMoreTokens())
                {
                    if (stk.nextToken().contains("*/"))
                        break;
                }
            }
            else if (token.contains("//"))
            {
                while (stk.hasMoreTokens() && stk.nextToken() != "\n")
                {
                    if (stk.nextToken().endsWith("\n"))
                        break;
                }
            }
            else if (token.contains("\""))
            {
                if (!token.endsWith("\""))
                    while (stk.hasMoreTokens())
                    {
                        if(stk.nextToken().contains("\""))
                            break;
                    }
            }
            else if (token.startsWith("if"))
                counter++;
        }
    } 

    catch (FileNotFoundException e) 
    {
        System.out.println("This file does not exist!");
    } 
    catch (IOException e) 
    {
        System.out.println("ERROR");
    }

    return counter;
}

1 个答案:

答案 0 :(得分:0)

无需亲自实施。你正在做的是实现解析器的基础知识。虽然对解析时发生了什么事情有所了解,但我建议使用https://github.com/javaparser/javaparser之类的库。玩得开心。