【问题标题】:Importing a .csv file into java, splitting it to an array or strings将 .csv 文件导入 java,将其拆分为数组或字符串
【发布时间】:2021-06-14 19:29:07
【问题描述】:

正如标题所说,我导入了一个 csv 文件,其中 3 列由逗号 (,) 分隔。 当我尝试单独打印每一列时,第一列打印没有问题。当我尝试第二列和第三列(索引 [1] 和 [2])时,它们按预期打印,但在退出之前我在程序结束时收到“ArrayIndexOutOfBoundsException”错误。这是为什么呢?

下面是代码:

public static void main(String[] args) throws IOException {

        String path = "C:\\Users\\UserONE\\Downloads\\inSic1.csv";
        String line = "";

        BufferedReader br = new BufferedReader(new FileReader(path));

        while ((line = br.readLine()) != null){
            String value [] = line.split(",");
            System.out.println(value[1]);

【问题讨论】:

  • 也许你的 csv 结尾有一个“空行”?
  • 好。不过,在尝试通过固定索引访问数组之前,您应该尝试通过检查数组大小(或字符串大小)来避免这些问题。
  • 作为替代方案,您可以readAllLines(Path path) 并收到List<String>(使用java.nio)。然后您可以在 io 处理之后调查此列表。您可以拆分该列表中的每个项目并检查其大小,如@maloomeister 所述。

标签: java string arraylist


【解决方案1】:

尝试动态打印值,而不是使用硬编码值。 例如

        while ((line = br.readLine()) != null) 
        {
            String values[] = line.split(",");
            for(String val: values)
            {
                System.out.println(val);
            }
        }

这样你就不会到达一个不存在的索引并且你会产生问题,即使你使用另一个文件,它也会起作用。

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多