我试图将一些结果数组插入二维数组。但最后我只获得所有2d数组,而我插入的最后一个数组集插入2d数组。当我调试并检查代码时,我发现每次执行此操作时bmma[il]=number;
,bmma数组的所有数组都会随着新分配的值而变化。
这是我实现的完整代码。
double[][] newDATA ;
double [][] bmma = new double[100][];
double [] number = new double[12];
int il=0;
String fname = "newAudio.wav";
RawAudioFileStream rawAudio = new RawAudioFileStream(fname);
StreamHeader mh = mfccm.init(rawAudio.getHeader());
MatrixFileStream out = new MatrixFileStream(fname + ".txt", true);
out.setMultiLine(true);
out.setHeader(mh);
while (true) {
StreamFrame f = mfccm.process(rawAudio.recvFrame());
if (f == null) {
break;
}
if(((MatrixHeader.MatrixFrame)f).data != null){
for (int i=0;i<12;i++){
newDATA=((MatrixHeader.MatrixFrame)f).data;
number[i]=newDATA[i][0];
}
bmma[il]=number;
il++;
}
非常感谢您提供任何帮助来克服此问题。
您只分配了一个数组number
(在此实例化一个数组- double [] number = new double[12];
),并将此数组多次分配给bmma
2D数组,因此2D数组的所有行都是相同的。
您应该为2D数组的每一行创建一个新数组:
number = new double[12];
for (int i=0;i<12;i++){
newDATA=((MatrixHeader.MatrixFrame)f).data;
number[i]=newDATA[i][0];
}
bmma[il]=number;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句