我正在尝试将一些结果数组插入二维数组。但最后我只得到所有的二维数组和我插入到二维数组中的最后一个数组的集合。当我调试和检查代码时,我发现每次执行此操作时 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
二维数组,因此二维数组的所有行都将相同。
您应该为二维数组的每一行创建一个新数组:
number = new double[12];
for (int i=0;i<12;i++){
newDATA=((MatrixHeader.MatrixFrame)f).data;
number[i]=newDATA[i][0];
}
bmma[il]=number;
关于java - 将数组插入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35311658/