我宣布LinkedHashMap<String, float[]>
,现在我想将float[]
值转换为double[][]
。我正在使用以下代码。
LinkedHashMap<String, float[]> fData;
double data[][] = null;
Iterator<String> iter = fData.keySet().iterator();
int i = 0;
while (iter.hasNext()) {
faName = iter.next();
tValue = fData.get(faName);
//data = new double[fData.size()][tValue.length];
for (int j = 0; j < tValue.length; j++) {
data[i][j] = tValue[j];
}
i++;
}
当我尝试打印数据System.out.println(Arrays.deepToString(data));
时,它不会显示数据:(
我试图调试我的代码,我发现我必须初始化数据 while循环然后我不知道数组维度:(
如何解决?
由于
答案 0 :(得分:1)
我认为问题是这里有两个步骤,你试图将它们合并为一个。首先,您要创建一个足以容纳所有单个数组的数组数组:
double[][] data = new double[fData.size()][];
接下来,您将要遍历所有条目,构建一个足以容纳该值的数组:
double[][] data = new double[fData.size()][];
int index = 0;
for (float[] entry: fData.values()) {
/* ... */
++index;
}
在每次循环迭代中,您都需要分配一个数组来保存所有浮点数:
double[][] data = new double[fData.size()][];
int index = 0;
for (float[] entry: fData.values()) {
data[index] = new double[entry.length];
/* ... */
++index;
}
最后,您需要复制数据:
double[][] data = new double[fData.size()][];
int index = 0;
for (float[] entry: fData.values()) {
data[index] = new double[entry.length];
for (int i = 0; i < entry.length; ++i)
data[index][i] = entry[i];
++index;
}
你应该是金色的!
答案 1 :(得分:0)
你需要:
double data[][] = new double[fData.size()][];
然后在循环中,你需要:
data[i] = new double[tValue.length];
答案 2 :(得分:0)
试试这个:
LinkedHashMap<String, float[]> fData;
double data[][] = new double[fData.size()][];
int i = 0;
for( String key in fData.keys() ) {
float[] tValue = fData.get(key);
data[i] = new double[ tValue.length ];
for (int j = 0; j < tValue.length; j++) {
data[i][j] = tValue[j];
}
i++;
}
答案 3 :(得分:0)
double data[][] = new data[fData.size()][];
data[i] = new double[tValue.length];