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

如何为CSV文件各列分配整数编号并按编号显示对应列?

实现CSV列编号查询功能

首先,你的代码里有两个小问题需要先修正:

  • 变量名写错了:st.readFileData()应该是stReader.readFileData()
  • CSV文件的每行包含多列数据,所以readFileData()的返回值应该是List<List<String>>(外层List对应行,内层List对应每行的列),而不是List<String>,否则没法区分不同列。

接下来按需求实现功能:

步骤1:修正CSV读取逻辑

确保StockFileReader的readFileData()方法正确读取每行的列数据,示例实现如下:

public class StockFileReader {
    private String filePath;

    public StockFileReader(String filePath) {
        this.filePath = filePath;
    }

    public List<List<String>> readFileData() throws IOException {
        List<List<String>> rows = new ArrayList<>();
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = br.readLine()) != null) {
                // 按逗号分割列,若列包含逗号/引号等特殊字符,建议用OpenCSV等专业库解析
                List<String> columns = Arrays.asList(line.split(","));
                rows.add(columns);
            }
        }
        return rows;
    }
}

步骤2:实现列查询方法

修改你的方法,实现输入编号显示对应列的功能:

public void showColumn(int columnNumber) throws IOException {
    StockFileReader stReader = new StockFileReader(file);
    List<List<String>> allRows = stReader.readFileData();

    if (allRows.isEmpty()) {
        System.out.println("CSV文件为空");
        return;
    }

    // 转换为0基索引(用户输入的是1开始的编号)
    int columnIndex = columnNumber - 1;
    int totalColumns = allRows.get(0).size();

    // 边界检查,防止输入的编号超出列范围
    if (columnIndex < 0 || columnIndex >= totalColumns) {
        System.out.printf("无效的列编号!当前CSV共有%d列,请输入1-%d之间的数字%n", totalColumns, totalColumns);
        return;
    }

    // 遍历每行,输出对应列的内容
    System.out.printf("第%d列的内容:%n", columnNumber);
    for (List<String> row : allRows) {
        if (columnIndex < row.size()) {
            System.out.println(row.get(columnIndex));
        } else {
            System.out.println("(该行无此列数据)");
        }
    }
}

额外说明

  • 若CSV列包含逗号、引号等特殊字符,不要用split(",")解析,建议使用OpenCSV等成熟库处理,避免解析错误。
  • 方法名改成showColumn更贴合功能,原方法返回double不符合需求,因为我们只需要显示列内容,无需返回数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:33:23