【发布时间】:2016-05-01 12:30:09
【问题描述】:
我一直在尝试将二维数组的列复制到一维数组中。我创建的 Stock 类有一个名为 data 的 double[] 数组。最后一个循环尝试打印一些应该在第一个 Stock 对象中的值,但它实际上打印了最后一个对象中的值。
Stock arr[] = new Stock[numcols]; // creates array with the same n of slots as columns
double[] temp = new double[numrows-1];
for(int i=1; i<numcols; i++){
for(int j=1; j<numrows; j++){
temp[j-1] = fluct[j][i];
}
arr[i-1] = new Stock(temp, compName[i-1], price[i-1]);
}
for(int i=0; i<numrows/20; i++)
System.out.println(arr[0].data[i] + arr[0].name);
事实上,如果我循环打印 arr[j].data[i] 它将为所有 j 打印相同的值。似乎循环正在为每个 Stock 创建具有相同值的所有对象,但我看不出它这样做的原因。
我已经检查了 2D 数组波动和所有值的顺序。我在位置 1 开始循环,因为位置 0 中的值不感兴趣。还尝试单独打印 temp[] 的值,它们是正确的,但对象中的数据仍然是错误的。
这是 Stock 对象(为简洁起见,省略了 getMean/getDev 方法):
public class Stock{
public static double[] data;
public static String name;
public static double stDev;
public static double price;
public static double mean;
public Stock(double[] newData, String newName, double newPrice){
this.data = newData;
this.name = newName;
this.price = newPrice;
this.mean = getMean();
this.stDev = getDev();
}
}
【问题讨论】:
标签: java object multidimensional-array