在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(注意,nonew
)
因此,如果我编辑任何NumberRow的数组,它会出现在所有NumberRow中。但我不是在这里这样做的吗(int x=0;x这不是在创建数组,而是在创建NumberRow对象。哦,等等,我明白了,非常感谢!我将空的双数组放在for循环中,创建了两个独立的数组。上面的代码实际上是不可能理解的。您遗漏了太多上下文(也遗漏了所有注释)。
double[] emptyDoubleArray = new double[dataset.numberOfRecords];
numberRow[x] = new NumberRow(emptyDoubleArray);