数组索引在java错误中超出范围

时间:2015-08-05 08:23:58

标签: java arrays collections linked-list file-handling

package com.testing;

import java.io.BufferedReader;
import java.io.FileReader;

public class CsvParser {
    public static void main(String[] args) {
        String csvFile = "D:/code-home/SentimentAnalysis/test_data/Sentiment Analysis Dataset.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = "\t";   // data is in format splitted by tab

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {
            // use comma as separator
            String[] tweet = line.split(cvsSplitBy);
            System.out.println(tweet[1]);
            System.out.println(tweet[3]);
        }
    }
}

该程序的目的是解析CSV格式。我使用了bufferRead方法。

当我去编译程序时,它工作正常。当我运行程序时,打印输出,但有一个例外:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at com.testing.CsvParser.main(CsvParser.java:34)

1 个答案:

答案 0 :(得分:1)

首先:Java中的数组是零索引的,这意味着数组中的第一个元素不是由数组[1]选择,而是由数组[0]选择。由于OutOufBoundsException是在索引1处触发的,因此您的数组中最多只包含一个元素(您应该在访问之前检查数组的大小)。因为您试图访问下一行中的索引3(Java中的第四个元素),我怀疑您希望每行中至少有3个元素。由于最多只有一个元素,您似乎使用了错误的分裂字符,或者您的文件未按预期格式化。我希望这可以帮助你。亲切的问候