Java 将阵列插入到二维阵列

Java 将阵列插入到二维阵列,java,arrays,Java,Arrays,我正在尝试将一些结果数组插入到二维数组中。但在最后,我只得到了所有的2d数组,以及我插入到2d数组中的最后一个数组集。当我调试和检查代码时,我发现每次我做这个动作时,bmma[il]=numberbmma数组的所有数组随新赋值而变化 下面是我实现的完整代码 double[][] newDATA ; double [][] bmma = new double[100][]; double [] number = new double[12]; int il=0; String fname =

我正在尝试将一些结果数组插入到二维数组中。但在最后,我只得到了所有的2d数组,以及我插入到2d数组中的最后一个数组集。当我调试和检查代码时,我发现每次我做这个动作时,
bmma[il]=numberbmma数组的所有数组随新赋值而变化

下面是我实现的完整代码

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++;
    }
double[][]新数据;
双精度[]bmma=新双精度[100][];
double[]编号=新的double[12];
int-il=0;
字符串fname=“newAudio.wav”;
RawAudioFileStream rawAudio=新的RawAudioFileStream(fname);
StreamHeader mh=mfccm.init(rawAudio.getHeader());
MatrixFileStream out=新的MatrixFileStream(fname+“.txt”,true);
out.setMultiLine(true);
out.setHeader(mh);
while(true){
StreamFrame f=mfccm.process(rawAudio.recvFrame());
如果(f==null){
打破
}
if(((MatrixHeader.MatrixFrame)f).data!=null){

对于(int i=0;i您只有一个数组分配给
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;
number=新的双精度[12];

对于(int i=0;我甚至意识不到我犯了一个简单的错误:)非常感谢你的帮助。在一个沉重的最后期限上工作,无话可说。