有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多个java方法返回的不是所有单独的Count行的和

我要把我的问题说出来,因为我很难用正确的方式给问题贴上标签

我给我的方法贴上这样的标签:

 /*Start*/
  public void contadorDeLineas(File file)throws IOException{
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;
/*Finish*/

我有几个这样标记的方法,但我想分别计算它们,但我编写的代码计算方法中的行数,从public开始,到“Finish”结束。但就目前而言,我编写的代码对方法中的所有行进行计数,并返回所有行的总和。我要做的是读取返回该值的第一个代码块,然后继续搜索下一个代码块。 这是我写的代码

public void LinesMethods(File file)throws IOException{
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
int lines_inside = 0;

while((line = br.readLine())!=null){
  if(line.startsWith("/*St")){
    do{
      line = br.readLine();
      line = line.trim();
      System.out.println(line);
      if(!(line.equals("") || line.startsWith("/*"))){
        lines_inside++;
      }
    }while(!line.startsWith("/*Fi"));
  }
}
br.close();
System.out.println("Found: " + lines_inside);
}

这是我的代码在控制台中显示的示例

/*Start*/
public void LineMethods(File file)throws IOException{
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
/*Finish*/
/*Start*/
public static void main(String[] args)throws IOException{
program2 test = new program2();
File root = new File(args[0]);
test.LOC(root);
System.out.println("Found: " + test.lines);
System.out.println("Other type of lines: " + test.toDo);
}
}
/*Finish*/
Block comments lines: 11

相反,我在寻找一个结果,比如第一次打印显示数字3,然后是数字8。 任何指导都将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    尝试将lines_inside++;放入代码中,如下所示:

      while((line = br.readLine())!=null){
        lines_inside++;
        ...
    

    这将为您提供文件中元素的大致数量

  2. # 2 楼答案

    试试这个

        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            boolean inside = false;
            int count = 0;
            String line;
            while ((line = br.readLine()) != null) {
                if (line.contains("/*Start*/")) {
                    inside = true;
                    count = 0;
                } else if (line.contains("/*Finish*/")) {
                    System.out.println("Found: " + count);
                    inside = false;
                } else if (inside) {
                    ++count;
                }
            }
            if (inside && count > 0)
                System.out.println("Found: " + count);
        }
    
  3. # 3 楼答案

    如果你有几种方法,当你只对行数感兴趣时,打印出所有的行可能太多了。您可以将方法的名称和行数放在地图中并打印出来

    public static void LinesMethods(File file)throws IOException{
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        int lines_inside = 0;
    
        Map<String, Integer> map = new HashMap<>();
    
        while((line = br.readLine())!=null){
            lines_inside = 0;
          if(line.startsWith("/*St")){
              String method = "";
            do{
              line = br.readLine();
    
              if(line.contains("public")){
                  method = line.substring(0, ine.indexOf('('));                  
              }
    
              line = line.trim();
    
              if(!(line.equals("") || line.startsWith("/*"))){
                lines_inside++;
              }
            }while(!line.startsWith("/*Fi"));
            map.put(method, lines_inside);
          }
        }
        br.close();
        for(String s :map.keySet()){
            System.out.println(s +" : "+ map.get(s));
        }
    }