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

Java库存系统通过索引修改物料名称时索引对应错误问题

问题分析与修复

你的代码核心问题在于编辑模块完全没有使用输入的item_index,而是用增强for循环直接修改了列表的第一个元素就break,这就是为什么输入索引2却修改了第一个物料的原因。另外要注意:你界面显示的Unique_Id是从1开始的(1、2),但Java的List索引是从0开始的,所以需要做索引转换。

修复后的代码(编辑模块)

else if (choice2 == 2) {
    System.out.println("----------------------");
    System.out.println("Edit Materials ");
    System.out.println("----------------------");
    System.out.print("Enter Item index: ");
    int item_index = scan.nextInt();
    // 转换为List的0-based索引
    int listIndex = item_index - 1;
    
    // 先判断索引是否合法,避免数组越界异常
    if (listIndex >= 0 && listIndex < item.size()) {
        System.out.print("Enter new name of the item: ");
        String newitem = scan.next();
        // 通过索引直接获取对应的物料对象,修改名称
        Materials targetItem = item.get(listIndex);
        targetItem.setItem_name(newitem);
        System.out.println("Item -> " + targetItem.getItem_name() + " Successfully updated! ");
    } else {
        System.out.println("Invalid item index! Please enter a valid index between 1 and " + item.size());
    }
}

修复说明

  1. 索引转换:将用户输入的1-based编号(比如界面显示的1、2)转换为List的0-based索引(减1),这样输入2就能定位到List的第2个元素(索引1)。
  2. 合法性校验:增加索引范围判断,防止用户输入超出列表长度的索引导致IndexOutOfBoundsException。
  3. 直接定位元素:用item.get(listIndex)直接获取目标物料,不需要循环,逻辑更清晰高效。

验证效果

当你输入索引2时,listIndex变为1,对应List中第二个元素(原名称cangoods),修改后再次查看库存,就能看到第二个物料的名称被更新为python,而第一个物料保持不变。

内容的提问来源于stack exchange,提问作者Joven Rey Flores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:55:20