0
我真的很直接的代碼,我希望我的問題是我剛纔看了太久。我正在測試一些計算,以確保在我投入巨大列表之前,我正在進行計算。我想要做的就是通過一個for循環創建一個新對象,並將它們拋入我構造的數組中。整個陣列在試圖設置單個位置時被重置
在我的主類公共靜態無效的主要(字符串ARGS [])的內容:
PositionHolder[] positions = new PositionHolder[8];
PositionHolder currPosition;
int currPos = 0;
for(int i = 0; i <= 7; i++){
/* For Random Points */
currPosition = new PositionHolder(i);
System.out.println("Resetting " + i);
positions[i] = currPosition;
//positions[i].setxPos(100 * Math.random()); // these get set in the
//positions[i].setyPos(100 * Math.random()); // PositionHolder constructor
for(int k = i; k >= 0; k--){
System.out.println(k + ": " + positions[k].getxPos() + ", " + positions[k].getyPos());
}
}
只是爲了澄清,我PositionHolder類如下:
public class PositionHolder {
private static double xPos;
private static double yPos;
private static int point;
private static boolean visited;
public PositionHolder(int pointNumber){
setxPos(100 * Math.random());
setyPos(-100 * Math.random());
setPoint(pointNumber);
setVisited(false);
}
public double getxPos() {
return xPos;
}
public void setxPos(double xPos) {
PositionHolder.xPos = xPos;
}
public double getyPos() {
return yPos;
}
public void setyPos(double yPos) {
PositionHolder.yPos = yPos;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
PositionHolder.point = point;
}
public boolean isVisited() {
return visited;
}
public void setVisited(boolean visited) {
PositionHolder.visited = visited;
}
}
的問題是,由於某種原因每次通過for循環覆蓋我放入數組的前一個PositionHolders。作爲一個簡單的例子,這裏是對的結束for循環我從System.println輸出系統的前幾行:
Resetting 0
0: 60.697435147416186, -96.35236848097432
Resetting 1
1: 57.98340997157546, -52.56948459757237
0: 57.98340997157546, -52.56948459757237
Resetting 2
2: 45.75236962694197, -32.03840605394901
1: 45.75236962694197, -32.03840605394901
0: 45.75236962694197, -32.03840605394901
所以,我想0呆在60.69743 ....和1留在57.98340 ....他們都被設置爲相同的(最resent)價值。我希望我能說它比這更復雜,但就是這樣。到底是怎麼回事?
--- Logan Murphy在下面給出的答案是正確的--- 作爲一個說明,不僅應該不時地休息一下以避免代碼中的愚蠢錯誤,但你真的不應該依賴日食「修復」解決方案來製作好代碼:P
哈哈看看這是爲什麼我甚至不會弄亂靜態,因此甚至沒有考慮過它。我只是做了一個例子來測試,所以我可以在我的代碼中使用算法的功能。愚蠢的靜力學。謝謝,我會檢查這個,但它應該是好的。 – zgc7009
你知道些什麼,它驚喜的效果。這就是爲什麼你不能看太久的代碼(並且不要依賴日食快速「修復」) – zgc7009