【问题标题】:Java index out of bounds error - missing entriesJava 索引越界错误 - 缺少条目
【发布时间】:2013-07-13 17:20:08
【问题描述】:

我正在尝试解析 csv 文件。典型的行如下所示:

7,118.2722833,98.61084463,94.36895546,,

我遇到的问题是,当我拆分行时,我只得到一个长度为 4 的数组。我希望数组的第五个和第六个元素返回 null,但我得到一个索引超出范围错误。

这是代码的简化版本:

BufferedReader br = new BufferedReader(new FileReader("FileName"));
String line = "";
String[] datum = new String[6];

while ((line = br.readLine()) != null) {
    datum = line.split(",");

    if (datum[5] != "") {
        //some statements
    }
}

知道为什么忽略最后两个逗号吗?

【问题讨论】:

  • @jlordo 当然,!=!equals 是一个问题,但主要问题是如何使用 split 保留尾随的空字段。

标签: java indexing


【解决方案1】:

数组索引从0开始,如果你想要第5个元素你需要做datum[4]而不是datum[5]

7 --------------0
118.2722833-----1
98.61084463-----2
94.36895546-----3,
 ----------------4

【讨论】:

    【解决方案2】:

    不带任何参数的split 方法将丢弃任何尾随null 元素。将负数 limit 传递给 split,它将返回一个包含完整的尾随 null 元素的数组。

    datum = line.split(",", -1);
    

    另外,不要用!=看是不是空字符串;使用

    if (!("".equals(datum[5]))) {
    

    【讨论】:

      【解决方案3】:

      我建议阅读limit 方法java.lang.String.split(String regex, int limit) 的参数

      【讨论】:

        猜你喜欢
        • 2013-10-13
        • 2014-06-06
        • 2015-03-22
        • 2022-01-13
        • 2015-01-10
        • 2014-01-27
        • 1970-01-01
        相关资源
        最近更新 更多