我有一个读取本地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)
它开始从该特定列中读取值。然后就出错了。
我觉得我现在一直在关注这个问题并且正好看看这个问题。
由于
答案 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文件的内容可能包含错误,则检查分割行的长度并设置错误处理是合适的。