誰かが次のコードで助けてくれますか?私のtemp配列のPoint2Dは、forループが再び実行されるときに、前のものを上書きすることはありません。JAVA - Forループは新しい配列を作成しません
テンポラリ配列が変化するかどうかをテストするためにfor-loopsを使ってデータを出力しましたが、確かにそうではありません...なぜこのようなことが起こりますか?
Point2Dは別のクラスで定義されています。 x、y、zの値はpublicです。
私はそれが.clone()関数かもしれないと思いますか?
ありがとうございます!
Point2D[] pointArr;
pointArr = populateArr(N);
for (int i = 0; i < N; i++)
{
Point2D[] temp = pointArr.clone();
if (i >= 0)
{
Point2D exch = temp[i];
temp[i] = temp[0];
temp[0] = exch;
//temp[0].z = 0.0;
}
System.out.println();
temp = determine_slopes(temp, N);
Arrays.sort(temp, temp[0].X_ORDER);
}
EDIT 1:ちょうど私が実際にされたPoint2D []一時は反復ごとに変更したい...明確にする...しかし、いくつかの理由で変更されません。何が問題なのでしょうか?
EDIT 2:pointArrのための私の出力は次の通りである:
10000 0 0.0 0 10000 0.0 3000 7000 0.0 7000 3000 0.0 20000 21000 0.0 3000 4000 0.0 14000 15000 0.0 6000 7000 0.0
私が最初の反復の後にtempを印刷すると、私の出力はpointArrのようには見えません。まったく異なります。
助けてくれてありがとう!実際にはtemp配列を上書きする必要があります...ループの各反復私はpointArrとまったく同じ新しい配列が必要です。私は自分のコードを変更しましたが、それでもtemp []を上書きしません。 – ISJ
基本的には、各繰り返しで同じpointArrが必要です... – ISJ
まあ、tempArrの複製をtempごとに作成しています。これは、pointArrと同じ要素を含むことを意味します。ですから、あなたは新しい配列を繰り返し作成しています。それはpointArrのコピーで、pointArrは決してtempを変更しないので、作成されるたびに同じように見えます。あなたがここに収穫しようとしているものは確かではありません:) –