ArrayIndexOutOfBoundsException - Java - 无循环打印

时间:2017-11-10 18:52:44

标签: java csv exception

我有一个读取本地CSV文件并将其存储在数组中的方法。当我尝试打印数组的索引之一时,我不断收到ArrayIndexOutOfBoundsException。

方法:

   public void getCsv() throws FileNotFoundException{

    String fileName = "ADCSV.csv";
    File file = new File(fileName);

    Scanner inputStream = new Scanner(file);

    while(inputStream.hasNext()){

        String data = inputStream.next();

         //array of strings
        String[] values = data.split(",");
        System.out.println(values[4]);


    }

    inputStream.close();

}

csv中的所有信息都存储为一般文本。当我尝试打印时,这是输出:

    "adminCount"
    "1"
    "0"
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at csvTest.test.getCsv(test.java:36)
    at csvTest.test.main(test.java:19)

它开始从该特定列中读取值。然后就出错了。

我觉得我现在一直在关注这个问题并且正好看看这个问题。

由于

1 个答案:

答案 0 :(得分:1)

将您的方法更改为:

public void getCsv() throws FileNotFoundException {

    String fileName = "ADCSV.csv";
    File file = new File(fileName);

    Scanner inputStream = new Scanner(file);

    while (inputStream.hasNext()) {

        String data = inputStream.next();

        // array of strings
        String[] values = data.split(",");
        if (values.length < 5) {
            System.err.println("not enough values: ");
            for (int i = 0; i < values.length; i++) {
                System.err.println("value " + i + ": " + values[i]);
            }
            continue;
        }
        System.out.println(values[4]);

    }

    inputStream.close();

}

这应该表明问题。我的意思是它将打印出错误发生的行的值。由于我们不知道究竟是什么产生了错误,因此这将是一个开始。也许某个地方是一个逗号,它应该不存在或者它不存在。 如果本地CSV文件的内容可能包含错误,则检查分割行的长度并设置错误处理是合适的。