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

Java实现用户输入匹配数组元素、按范围筛选输出元素方法

Java客户数据管理菜单程序Case3/Case4补全实现

现有代码已完成菜单循环、客户新增、全量客户展示基础逻辑,基于ArrayList<CustomerData>存储客户数据、Scanner接收用户输入,以下补全逻辑完全保留原有技术规范,无需修改现有已实现的代码结构。

Case 3 按客户ID查询单条客户完整数据

实现步骤:

  • 控制台提示用户输入待查询的客户ID,接收输入时增加非法格式兜底,避免非数字输入导致程序崩溃
  • 遍历ArrayList<CustomerData>集合,逐个匹配客户对象的ID属性与用户输入值
  • 匹配到对应客户时,直接复用现有全量展示的打印逻辑输出客户全字段信息;遍历结束未找到匹配项时,输出无匹配记录提示

对应代码片段:

case 3:
    System.out.println("请输入待查询的客户ID:");
    int targetId;
    // 处理非数字输入
    if (!scanner.hasNextInt()) {
        System.out.println("输入无效,请输入合法数字ID");
        scanner.next(); // 清空缓冲区非法内容
        break;
    }
    targetId = scanner.nextInt();
    scanner.nextLine(); // 消费残留换行符,避免后续输入读取异常
    CustomerData targetCust = null;
    for (CustomerData cust : customerList) {
        if (cust.getId() == targetId) {
            targetCust = cust;
            break;
        }
    }
    if (targetCust != null) {
        System.out.println("查询到客户信息:");
        System.out.println(targetCust);
    } else {
        System.out.println("未查询到ID为" + targetId + "的客户记录");
    }
    break;

Case 4 按数值范围筛选客户并顺序输出

支持索引区间、销售额区间两类筛选场景,统一接收起始值-结束值格式的输入(例:1-4),实现步骤:

  • 控制台提示用户输入筛选范围,明确标注输入格式,接收整行字符串输入
  • 校验输入格式:判断是否包含-分隔符、拆分后的两段内容是否为合法数字、起始值是否小于等于结束值,格式非法时直接输出提示终止当前分支
  • 根据当前Case对应的筛选维度遍历集合,按原有存储顺序收集符合区间条件的客户:
    • 索引筛选:注意控制台展示的客户序号默认从1开始,需要将输入的起止值减1对齐集合下标(集合下标从0开始)
    • 销售额筛选:直接比对客户对象的销售额属性是否落在区间内即可
  • 逐行输出符合条件的客户信息,无匹配记录时输出对应提示

对应代码片段(以索引区间筛选为例,销售额筛选只需替换判断条件即可):

case 4:
    System.out.println("请输入筛选范围,格式为起始值-结束值(例:1-4):");
    String rangeStr = scanner.nextLine().trim();
    // 基础格式校验
    if (!rangeStr.contains("-")) {
        System.out.println("格式错误,请按「起始值-结束值」格式输入");
        break;
    }
    String[] rangeParts = rangeStr.split("-");
    if (rangeParts.length != 2) {
        System.out.println("格式错误,请按「起始值-结束值」格式输入");
        break;
    }
    try {
        int rangeStart = Integer.parseInt(rangeParts[0].trim());
        int rangeEnd = Integer.parseInt(rangeParts[1].trim());
        if (rangeStart > rangeEnd) {
            System.out.println("输入错误,起始值不能大于结束值");
            break;
        }
        // 索引筛选时做序号对齐,若为销售额筛选可删除这两行,直接用rangeStart、rangeEnd做数值比对
        int startIdx = rangeStart - 1;
        int endIdx = rangeEnd - 1;
        System.out.println("区间" + rangeStart + "-" + rangeEnd + "内的客户记录:");
        int matchCount = 0;
        for (int i = 0; i < customerList.size(); i++) {
            // 索引筛选判断条件
            if (i >= startIdx && i <= endIdx) {
            // 销售额筛选替换为下一行判断条件即可
            // if (customerList.get(i).getSales() >= rangeStart && customerList.get(i).getSales() <= rangeEnd)
                System.out.println(customerList.get(i));
                matchCount++;
            }
        }
        if (matchCount == 0) {
            System.out.println("该区间内无匹配客户记录");
        }
    } catch (NumberFormatException e) {
        System.out.println("输入错误,区间值必须为合法数字");
    }
    break;

注意点:

  • 所有输入分支必须加非法值兜底,避免用户输入异常内容时程序直接退出
  • 客户信息输出直接复用现有全量列表的打印格式,保持全程序输出风格统一
  • 调用nextInt()、nextDouble()等数值输入方法后,必须调用一次nextLine()消费缓冲区残留的换行符,否则后续字符串输入会读取到空值

内容的提问来源于stack exchange,提问作者Justin Anton Porter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:03:22