我尝试制作方法,该方法将在.java文件中找到所有条件(我认为该文件仅在说明时才包含正确的文件)。它应该计算所有"如果",而不是用评论或拖动的字符串来计算的。我试图用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;
}
无需自己实施。您正在做的是实施解析器的基础知识。尽管对解析时正在发生的事情有所了解是一件好事,但我建议使用https://github.com/javaparser/javaparser等库。玩得开心。