首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CSVReader?

如何使用CSVReader?
EN

Stack Overflow用户
提问于 2014-01-07 05:19:46
回答 2查看 541关注 0票数 1

我试图使用CSVReader在记事本中读取我的文件,但我无法让它工作。它说ArrayIndexOutOfBoundsException: 2 line "y[i][2]".,尽管我在100中对数组行进行了修正。目前,我刚开始使用Java和CSVReader。

代码语言:javascript
复制
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();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-07 05:38:21

在从文件中读取数据之后,您为什么要存储数据,这一点完全不清楚,但是.

代码语言:javascript
复制
double[][] y = new double[100][1];

这将分配一个由100个double数组组成的数组,每个数组的长度为1

在此:

代码语言:javascript
复制
 y[i][2] = Double.parseDouble(line[2]);

您尝试在这100个数组之一的第三个元素中存储一些东西。它们没有那么大;您创建它们是为了有一个长度的one

我怀疑你是想:

代码语言:javascript
复制
 y[i][0] = Double.parseDouble(line[2]);

因为您要存储在y数组中的唯一东西是这个单个值。

尽管如此,这是存储这些价值观的一个糟糕的方法。通常,使用动态数据结构可以为您提供更好的服务,因此不必担心文件的长度(行数)。另外,为什么需要两个不同的2D数组?例如,即使是一个List<Double[]>,也会更好。

票数 0
EN

Stack Overflow用户

发布于 2014-01-07 05:23:40

你创造了

代码语言:javascript
复制
double[][] y = new double[100][1];

即100行1列。但试图把价值放在y[i][2]的位置。这就是为什么你要得到ArrayIndexOutOfBoundsException。创造类似

代码语言:javascript
复制
double[][] y = new double[100][3];

或者您可以简单地将值作为值(在本例中,您不需要创建如上所述的2D数组)。

代码语言:javascript
复制
y[i][0] = Double.parseDouble(line[2]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20964466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档