【发布时间】:2011-09-25 12:32:14
【问题描述】:
我正在尝试将 CSV 文件导入到可以在 Java 程序中使用的数组中。 CSV 文件已成功导入,输出出现在终端上,但抛出错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at CompareCSV.main(CompareCSV.java:19)
最后。此外,当我尝试调用数组中的元素时,它也显示相同的错误。我的代码如下:
import java.io.*;
import java.util.*;
public class CompareCSV {
public static void main(String[] args) {
String fileName = "sampledata1.csv";
try {
BufferedReader br = new BufferedReader( new FileReader(fileName));
String strLine = null;
StringTokenizer st = null;
int lineNumber = 0, tokenNumber = 0;
while((fileName = br.readLine()) != null) {
lineNumber++;
String[] result = fileName.split(",");
for (int x=0; x<result.length; x++) {
System.out.println(result[x]);
}
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
为什么在 for 循环中使用硬编码常量,而不是结果大小?
-
您可以使用现有的 Java CSV API 来满足您的需求:例如 sourceforge.net/projects/csv4j 或 sourceforge.net/projects/javacsv。
-
@Perception 是对的,你确定你读完一行后有 3 个值吗?
-
@Perception:我这样做是为了临时测试我是否会继续遇到异常,实际上应该有什么结果.length
-
@Benoit:谢谢,我会检查一下!
标签: java csv stringtokenizer