填充后数组是空的? (JAVA)

时间:2014-12-30 23:19:42

标签: java arrays csv

我对Java比较陌生。我正在尝试读取.csv文件并对其进行一些计算。我成功地设法读取文件并以字符串的形式获取数据,结构为csv,使用" " (空格)而不是逗号,然后我想将数字(字符串)转换为双精度数并将它们存储在数组中。

dataArray在类中声明如下:

public double dataArray[][];

出于某种原因,在运行以下方法填充后,我得到一个空数组(一个只有0.0的数组):

//Store value into the array
public void toArray()
{
    try
    {
        int nrows = this.text.split("\n").length;
        int ncolumns =this.text.split("\n")[0].split(" ").length;
        //System.out.println(nrows);
        //System.out.println(ncolumns);
        this.dataArray = new double[nrows][ncolumns];
        for(int i=0; i<nrows ;i++)
        {
            for(int k=1; k<(ncolumns-1);k++)
            {
                double number = Double.parseDouble(this.text.split("\n")[i].split(" ")[k]);  //Double.parseDouble(this.text.split("\n")[i].split(" ")[k]);
                this.dataArray[i][k] = number;
            }
        }
    }catch(Exception e)
    {
        System.out.println(e);
    }
}

我做错了什么?我尝试了几种修复,即使在这种方法中使用其他方法,但还没有找到解决方案..

编辑:修正了k错了

1 个答案:

答案 0 :(得分:2)

我没有调试您的代码,而是为您提供了一个可以满足您需求的工作片段:

public void toArray() {
    String[] split = this.text.split("\n");
    this.data = new double[split.length][];
    for (int i=0 ; i<data.length ; i++) {
        String[] cols = split[i].split("\\s+");
        data[i] = new double[cols.length];
        for (int j=0 ; j<cols.length ; j++)
            data[i][j] = Double.parseDouble(cols[j]);
    }
}

经过测试:text = "1 2 3 4\n5 6 7 8\n9 10 11"

输出:data = [[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0]]