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

如何提取数组中用户指定索引的信息并存储,实现按车牌号查询车辆信息

实现方案指导
  • 首先解决现有代码的核心问题:你当前的读取逻辑仅将每行CSV的字段拆分到临时变量,没有存储到可全局访问的结构中,读取完成后无法复用之前的行数据,自然没办法做后续的车牌号查找。你可以选择用数组或者集合存储所有车辆信息,ArrayList相比普通数组不需要提前确定长度,更适合CSV行数不确定的场景。
  • 读取CSV阶段不要加入用户交互逻辑,等所有数据全部加载到存储结构后,再提示用户输入车牌号执行查找。
  • 查找逻辑可以根据场景选择:数据量小的时候直接遍历存储结构对比车牌号即可;数据量大的场景可以额外构建HashMap<车牌号, 索引>的映射表,查找效率可以从O(n)优化到O(1)。
  • 注意添加边界校验:比如空行跳过、字段数量不足的异常行跳过、车牌号匹配不到的提示,避免程序运行报错。
参考代码实现
import java.util.ArrayList;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class CarInfoQuery {
    public static void main(String[] args) {
        ArrayList<String[]> carList = new ArrayList<>();
        Scanner csvScanner = null;
        
        // 读取CSV数据存入集合
        try {
            csvScanner = new Scanner(new File("你的CSV文件路径.csv"));
            while (csvScanner.hasNextLine()) {
                String line = csvScanner.nextLine().trim();
                // 跳过空行
                if (line.isEmpty()) continue;
                String[] fields = line.split(",");
                // 校验字段数量避免数组越界
                if (fields.length >= 6) {
                    carList.add(fields);
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("CSV文件未找到:" + e.getMessage());
            return;
        } finally {
            if (csvScanner != null) csvScanner.close();
        }

        // 提示用户输入车牌号
        Scanner userScanner = new Scanner(System.in);
        System.out.print("请输入要查询的车牌号:");
        String targetNo = userScanner.nextLine().trim();
        userScanner.close();

        // 遍历查找匹配车辆
        int matchIndex = -1;
        String[] matchCar = null;
        for (int i = 0; i < carList.size(); i++) {
            if (carList.get(i)[0].equals(targetNo)) {
                matchIndex = i;
                matchCar = carList.get(i);
                break;
            }
        }

        // 输出查询结果
        if (matchIndex != -1) {
            System.out.println("查询到对应车辆,索引位置:" + matchIndex);
            System.out.println("车牌号:" + matchCar[0]);
            System.out.println("车辆名称:" + matchCar[1]);
            System.out.println("座位数:" + matchCar[2]);
            System.out.println("变速箱类型:" + matchCar[3]);
            System.out.println("车型:" + matchCar[4]);
            System.out.println("日租价格:" + matchCar[5]);
        } else {
            System.out.println("未找到对应车牌号的车辆信息");
        }
    }
}
优化建议

如果你的CSV数据量较大,或者需要高频查询,可以构建哈希映射表优化查找速度,构建逻辑如下:

import java.util.HashMap;

// 新增映射表存储车牌号和索引的对应关系
HashMap<String, Integer> carNoIndexMap = new HashMap<>();

// 读取CSV的循环中,存入carList后同步写入映射表
carList.add(fields);
carNoIndexMap.put(fields[0], carList.size() - 1);

// 查找时直接通过映射表取索引,无需遍历
Integer matchIndex = carNoIndexMap.get(targetNo);
if (matchIndex != null) {
    String[] matchCar = carList.get(matchIndex);
    // 后续打印逻辑和上面一致
}

如果你的CSV字段内容中包含逗号(比如某个字段是带逗号的备注),不要用split(",")拆分,建议使用专门的CSV解析库处理,避免拆分错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:21:03