Java 如何使用CSVReader?
我试图用Java 如何使用CSVReader?,java,csv,inputstream,fileinputstream,Java,Csv,Inputstream,Fileinputstream,我试图用CSVReader读取记事本中的文件,但无法正常工作。它显示ArrayIndexOutOfBoundsException:2行“y[i][2]”。我目前还不熟悉使用Java和CSVReader public static void main(String[] args) throws IOException { double[][] x = new double[100][3]; double[][] y = new double[100][1]; Strin
CSVReader
读取记事本中的文件,但无法正常工作。它显示ArrayIndexOutOfBoundsException:2行“y[i][2]”
。我目前还不熟悉使用Java和CSVReader
public static void main(String[] args) throws IOException {
double[][] x = new double[100][3];
double[][] y = new double[100][1];
String line[];
try{
CSVReader br=new CSVReader(new FileReader("ex2data2.txt"),',');
int i = 0;
while((line=br.readNext())!=null){
x[i][0] = Double.parseDouble(line[0]);
x[i][1] = Double.parseDouble(line[1]);
y[i][2] = Double.parseDouble(line[2]);
i++;
}
br.close();
}
catch (IOException e) {
e.printStackTrace();
}
你必须创造
double[][] y = new double[100][1];
i、 e.100行1列。但尝试将值放在位置y[i][2]
。这就是为什么你会在BoundsException中获得ArrayIndexOutOfBoundsException。创造像
double[][] y = new double[100][3];
或者您可以简单地将值设置为(在这种情况下,您不需要创建如上所述的2D数组)
现在还不清楚为什么在从文件中读取数据后会按原样存储数据,但是
double[][] y = new double[100][1];
这将分配一个包含100个double
数组的数组,每个数组的长度1
在这里:
您试图在这100个数组之一的第三个元素中存储某些内容。它们没有那么大;您创建它们的长度为1
我猜你是想:
y[i][0] = Double.parseDouble(line[2]);
因为您存储在y
数组中的唯一内容就是这个值
尽管如此,这是一种糟糕的存储这些值的方法。通常,使用动态数据结构可以更好地为您服务,这样您就不必担心文件的长度(行数)。此外,为什么需要两个不同的二维阵列?例如,即使是
列表
,也会更好 嗯,你的y
2d数组只允许第二级数组中的一个元素,你正试图在第三级数组中存储一些东西。你不需要像CVSReader这样复杂的东西来读取简单的文本文件。。。在尝试更高级的东西之前,您还应该学习Java另外,我的ESP告诉我OP要做的是将值存储在y[i][0]
中,因为我稍后会将其存储在我的矩阵对象“矩阵Ax=新矩阵(x),其中x必须是二维数组(JAMA lib)”中动态数据结构如何工作?我不知道如何使用列表
y[i][2] = Double.parseDouble(line[2]);
y[i][0] = Double.parseDouble(line[2]);