You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaParser统计IfStmt语句数量时如何仅获取最终总计数

JavaParser统计IfStmt语句总数量实现方案

修改逻辑

  • 移除IfStmtVisitor的visit方法中的打印语句,仅保留计数累加逻辑,避免输出逐次递增的中间值
  • 在main方法的AST遍历逻辑执行完成后,再统一获取并打印总计数
  • 新增super.visit(n, arg)调用,保证嵌套在if块内部的if语句也能被正常统计

完整修改后代码

package org.javaparser.examples.chapter2;

import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.stmt.IfStmt;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;

import java.io.FileInputStream;

public class VoidVisitorComplete {

    private static final String FILE_PATH = "src/main/java/org/javaparser/samples/prime.java";

    public static void main(String[] args) throws Exception {
        CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH));
        IfStmtVisitor ifStmtVisitor = new IfStmtVisitor();
        ifStmtVisitor.visit(cu, null);
        // 遍历完成后统一输出if语句总数量
        System.out.println(ifStmtVisitor.getNumber());
    }

    private static class IfStmtVisitor extends VoidVisitorAdapter<Void> {
        int count = 0;
        @Override
        public void visit(IfStmt n, Void arg) {
            count++;
            // 遍历当前if语句内部的子节点,保证嵌套if可被统计
            super.visit(n, arg);
        }
        public int getNumber() {
            return count;
        }
    }
}

内容的提问来源于stack exchange,提问作者Mohamed Ifham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:51:04