在Java中将数据读入数组时出错

在Java中将数据读入数组时出错,java,Java,我创建了一个方法,将读取的数字放入一个NumberArray中,每个输入文件总共创建2个NumberArray。我已经在标有“!!!!”的行上创建了一个对象数组NumberRow。我把读双精度放入数组中。但是,当我读取这些数组时,numberRow[0]是不正确的;numberRow[1]中的所有值都在那里,并且numberRow[1]中的值是正确的。可能有一个简单的解决方案,但我真的不知道这里出了什么问题 Unit[] unitArray = new Unit[dataset.numberOf

我创建了一个方法,将读取的数字放入一个
NumberArray
中,每个输入文件总共创建2个
NumberArray
。我已经在标有“!!!!”的行上创建了一个对象数组
NumberRow
。我把读双精度放入数组中。但是,当我读取这些数组时,
numberRow[0]
是不正确的;
numberRow[1]
中的所有值都在那里,并且
numberRow[1]
中的值是正确的。可能有一个简单的解决方案,但我真的不知道这里出了什么问题

Unit[] unitArray = new Unit[dataset.numberOfRecords];
    double[] emptyDoubleArray = new double[dataset.numberOfRecords];
    for(int x = 0; x<dataset.numberOfVariables; x++){
        numberRow[x] = new NumberRow(emptyDoubleArray);
    }
    for(int i = 0; i<dataset.numberOfRecords; i++){
        String label = in.next();
        double[] elementsPerUnit = new double[dataset.numberOfVariables];
        for(int k = 0; k<dataset.numberOfVariables; k++){
            double misc = in.nextDouble();
        !!!!!   numberRow[k].NumberArray[i] = misc;
            elementsPerUnit[k] = misc;
        }
        unit = new Unit(label, elementsPerUnit);
        unitArray[i] = unit;
    }
    unitRow = new UnitRow(unitArray);
    out.print(Arrays.toString(numberRow[0].NumberArray));
}
Unit[]unitArray=新单位[dataset.numberOfRecords];
double[]emptyDoubleArray=新的double[dataset.numberOfRecords];

对于(int x=0;x数组是Java中的对象。也就是说,它们不是通过值复制和传递的(如
int
等),而是通过引用传递的(如对象、字符串…)

如果使用
new
创建一个数组并将其传递给两个对象,则仍然只有一个数组(您只使用了
new
一次,请这样考虑)。当一个对象编辑数组时,另一个对象会看到已编辑的数组的单个副本

解决方案是,如果新阵列与所有其他阵列不同,则创建一个新阵列

编辑:在此处创建一个数组(请注意
新建

这一个数组被传递给所有NumberRows(注意,no
new


因此,如果我编辑任何NumberRow的数组,它会出现在所有NumberRow中。

但我不是在这里这样做的吗(int x=0;x这不是在创建数组,而是在创建NumberRow对象。哦,等等,我明白了,非常感谢!我将空的双数组放在for循环中,创建了两个独立的数组。上面的代码实际上是不可能理解的。您遗漏了太多上下文(也遗漏了所有注释)。
double[] emptyDoubleArray = new double[dataset.numberOfRecords];
numberRow[x] = new NumberRow(emptyDoubleArray);