我正在尝试解析一个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
    }
}


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

最佳答案

没有任何参数的split方法将丢弃任何尾随的null元素。将负的limit传递给split,它将返回一个数组,其中尾随的null元素完整无缺。

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


另外,不要使用!=来查看它是否为空字符串。使用

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

关于java - Java索引超出范围错误-缺少条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17661098/

10-13 07:40