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
相关产品推荐
相关产品推荐

