[英]Copying columns from 2D array into object 1D array
我一直在尝试将2D数组的列复制到1D数组中。 我创建的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打印相同的值。 似乎循环正在为每个股票创建具有相同值的所有对象,但我认为没有理由这样做。
我检查了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();
}
}
问题在于您是否定义了临时数组。 您应该在第一个for
循环内执行此操作:
Stock arr[] = new Stock[numcols]; // creates array with the same n of slots as columns
for(int i=1; i<numcols; i++){
double[] temp = new double[numrows-1];
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-1; i++)
System.out.println(arr[0].data[i] + arr[0].name);
这样,将为每个arr元素使用新的温度。 当前,您正在使用相同的临时对象,并且它的值以及arr元素的值都正在更新。 另外,我已将条件更改为i<numrows-i
的最后一个for循环。 不知道为什么你需要i<numrows/20
=)
Java学习祝您好运!
好吧,这很尴尬,但是我终于弄清楚了什么地方出了问题。 在我的对象类中,我的变量是静态的! 删除解决了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.