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

Java商品选购程序无序选择商品时报错问题求助

Java商品选购程序问题修复方案

核心问题

  1. addD方法错误地在数组末尾追加元素,而非对应商品的索引位置更新数量,导致无序选择时出现数组越界异常。
  2. 重复选择同一商品时未做数量累加,无法实现合并总计的需求。
  3. 循环逻辑冗余,Scanner对象重复创建,造成资源浪费。

修复方案

  1. 初始化quantity数组时,直接与name数组长度保持一致,所有元素初始化为0,确保每个商品对应固定的索引位置。
  2. 删除addD方法,通过商品编号计算对应索引,直接对quantity数组的对应位置进行数量累加。
  3. 优化循环结构,Scanner对象仅创建一次,明确结账触发条件(输入大于商品总数的数字即可结账)。

修改后的完整代码

import java.util.Scanner;

public class ProductSelector {
    // 示例商品名称数组,可根据实际需求修改
    private static String[] name = {"商品1", "商品2", "商品3"};
    // 初始化数量数组,与商品名称数组长度一致,初始值为0
    private static double[] quantity = new double[name.length];

    public static void main(String[] args) {
        Scanner myObj = new Scanner(System.in);
        int ItemNumber;
        double ItemQuantity;

        do {
            System.out.println("请选择商品编号(输入大于" + name.length + "的数字结账):");
            ItemNumber = myObj.nextInt();

            if (ItemNumber >= 1 && ItemNumber <= name.length) {
                System.out.println("请输入购买数量:");
                ItemQuantity = myObj.nextDouble();
                // 对应商品索引位置累加数量
                quantity[ItemNumber - 1] += ItemQuantity;
                String ItemName = name[ItemNumber - 1];
                System.out.println("\n客户选购了 " + Math.round(quantity[ItemNumber - 1]) + " 件 " + ItemName + "\n");
            } else if (ItemNumber <= 0) {
                System.out.println("输入无效,请输入正确的商品编号或结账数字");
            }
        } while (ItemNumber <= name.length);

        // 打印最终选购清单
        System.out.println("=== 最终选购清单 ===");
        for (int i = 0; i < name.length; i++) {
            if (quantity[i] > 0) {
                System.out.println(name[i] + ":" + Math.round(quantity[i]) + "件");
            }
        }
        myObj.close();
    }
}

说明

  • 无论用户选择商品的顺序如何,都能通过索引直接定位到对应商品的数量位置,不会出现数组越界。
  • 重复选择同一商品时,会自动累加数量,满足合并总计的需求。
  • 增加了最终选购清单的打印,方便查看所有已选商品及数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:15:28