私は2次元配列の列を1次元配列にコピーしようとしていました。私が作成したStockクラスには、dataというdouble []配列があります。最後のループは、最初のStockオブジェクト内にあるべきいくつかの値を印刷しようとしますが、実際には最後のオブジェクトからの値を出力します。実際に2D配列からオブジェクト1D配列への列のコピー
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);
、Iループ印刷ARR [J] .dataの場合は[i]が、それはすべてのjについて同じ値を出力します。ループは、各Stockに対して同じ値を持つすべてのオブジェクトを作成しているようですが、そうする理由はありません。
2D配列の変動とすべての値が順番に確認されました。私は位置0の値が無関係なので、位置1でループを開始します。また、temp []の値を個別に印刷してみましたが、それらは正しくありましたが、依然としてオブジェクトのデータが間違っていました。
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();
}
}
ご返信ありがとうございます。私はループ内でtempを宣言しようとしましたが、同じ出力を得ています。また、これらのループを実行する前にStockオブジェクトを初期化しようとしましたが、どちらも機能しませんでした。 最後のループでは、私は20で割っていましたので、いくつかの値しか表示されませんでした。そうでなければ、すべての値が印刷されるのを待っていました。もう一度ありがとうございます –
これは奇妙なことです...ループの中で「temp」と宣言しようとしましたか?もし出力が同じでなければならない場合、問題は 'Stock'変数になるでしょう...' temp'型変数と 'Stock'型変数の両方をループ内で定義する必要があります。 スニペットをコードにコピーして貼り付け、正常に動作しているかどうかを確認しますか? – Victor
あなたのコードを貼り付けてコピーしようとしたところ、それはうまくいかなかったのに、同じ出力が得られました。 Stockオブジェクトのコードを追加しましたが、それは間違っていると思います。 –