[英]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.