對不起,標題不是很理解,但我的英語不起作用。我是java中的一名新程序員,儘管已經閱讀過參數如何工作,但我並不真正瞭解發生了什麼。對對象所做的任何更改也會更改當前對象
sudokuBoard alter = new sudokuBoard();
this.createRandomSudokuBoard();
alter.setBoardFromArray(this.getBoard().clone());
(...)
for(int i = 0; i < 81; i++) {
alter.clearCell(positionListonX[i], positionListonY[i]); <<<<<<<<<<<<< Here
if(alter.numberOfSolutions(2) < 2) {
this.clearCell(positionListonX[i], positionListonY[i]);
alter.setBoardFromArray(this.getBoard().clone());
} else {
alter.setBoardFromArray(this.getBoard().clone());
}
}
會發生什麼情況的是,在指定的行,調用方法的對象alter
也修改當前對象(本)的clearCell
。在最後一次絕望的嘗試中,我試圖用clone()
方法解決它(如您所見),但它沒有奏效。
發生了什麼事?我錯過了什麼?非常感謝你。
現在我更好地理解它,非常感謝你。該類的代碼在這裏http://pastebin.com/fjCP7DQL它沒有完成,沒有記錄,也沒有完成。 – Adelaiglesia
它看起來像你試圖保留一個副本,只有當你知道這個改變是好的時候纔對this.board進行修改。您將需要更新setBoardFromArray來執行逐個元素的副本,而不是僅分配數組。我相信你的'clone'調用不起作用,因爲你克隆了對另一個數組的引用,而不是數據本身。查看我編輯的'setBoardToArray',我認爲它會做你想做的事。 –