죄송합니다. 제목이 이해하기 쉽지 않지만 영어가 도움이되지 않습니다. 필자는 자바에서 새로운 프로그래머이며 매개 변수의 작동 방식을 읽었음에도 실제로 어떤 일이 일어나고 있는지 이해하지 못합니다. 어떻게됩니까개체를 변경하면 현재 개체도 변경됩니다.
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를 업데이트하여 배열을 할당하는 대신 요소 별 복사를 수행하는 것이 좋습니다. 데이터 자체가 아니라 다른 배열에 대한 참조를 복제했기 때문에 '복제본'호출이 작동하지 않는다고 생각합니다. 내가 원하는대로 할 수있는'setBoardToArray'에 대한 제 편집을보십시오. –