有人可以請幫我用下面的代碼。當for循環再次執行時,我的臨時Point2D數組永遠不會覆蓋前一個。JAVA - For循環不創建一個新的陣列
我使用for-loops打印數據以測試temp數組是否改變......並且它肯定不會......爲什麼會發生這樣的事情?
Point2D在不同的類中定義。它的x,y和z值是公開的。
我認爲它可能是.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);
}
編輯1:只是爲了澄清...其實我是想的Point2D []溫度與每次迭代改變......但由於某種原因,它不會改變。可能是什麼問題?
編輯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's ...完全不同。
感謝您的幫助!我其實想要臨時數組被覆蓋...循環的每次迭代我想要一個完全像pointArr的新數組。我改變了我的代碼,但它仍然不覆蓋temp [] – ISJ 2012-03-15 15:24:07
基本上我想每次迭代都使用相同的pointArr ... – ISJ 2012-03-15 15:27:12
那麼,你正在創建一個每次迭代都有臨時值的pointArr的克隆。這意味着它將包含與pointArr相同的元素。所以,你每次迭代創建一個新數組,這是一個pointArr的副本,並且由於pointArr永遠不會改變每次創建temp時的外觀。我不知道你在這裏試圖達到什麼:) – 2012-03-15 15:31:07