繁体   English   中英

数组一旦填充就为空? (Java)

[英]Array is empty once filled? (Java)

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

在类中声明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

我建议您使用一个可满足您需要的代码片段,而不是调试您的代码:

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]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM