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

ManufacturingController方法调用错误排查:requestProduct与getNumberOfProducts实现问题

错误定位

  • 计数变量count是getNumberOfProducts方法的局部变量,每次调用方法都会被重新初始化为0,无法累计多次调用的产品申请次数,所以不管调用多少次getNumberOfProducts永远返回1。
  • requestProduct方法没有实现「记录已申请产品」的逻辑,也没有触发计数累加的操作,直接调用getNumberOfProducts获取序号不符合业务逻辑。
  • 现有代码缺少全局持久化的计数存储载体,无法跨方法调用保留申请总数。

修正方案

需要给类添加静态成员变量存储累计的产品申请数,每次调用requestProduct时先累加计数,再拼接返回值,getNumberOfProducts直接返回当前的计数值即可,修正后代码如下:

public class DetailManufacturing {
    // 新增静态成员变量存储累计申请数,类加载时初始化为0,全局共享
    private static int productCount = 0;

    public static void main(String[] args) {
        // 测试用例,输出结果符合需求
        System.out.println(requestProduct("detail 1")); // 输出1. Requested detail 1
        System.out.println(requestProduct("Wrench")); // 输出2. Requested Wrench
        System.out.println(getNumberOfProducts()); // 输出2
    }

    public static String requestProduct(String product) {
        // 申请产品时先累加计数
        productCount++;
        return productCount + ". Requested " + product;
    }

    public static int getNumberOfProducts() {
        // 直接返回当前累计的申请总数
        return productCount;
    }
}

如果业务后续需要查询已申请的具体产品信息,可以额外增加静态List存储产品记录,修改如下:

import java.util.ArrayList;
import java.util.List;

public class DetailManufacturing {
    private static final List<String> productList = new ArrayList<>();

    public static void main(String[] args) {
        System.out.println(requestProduct("detail 1"));
        System.out.println(requestProduct("Wrench"));
        System.out.println(getNumberOfProducts());
    }

    public static String requestProduct(String product) {
        productList.add(product);
        return productList.size() + ". Requested " + product;
    }

    public static int getNumberOfProducts() {
        return productList.size();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:07