정말 이상한 행동을 관찰합니다. 내 코드에는 버그가 있다는 것이 확실하지만 Eclipse의 동작이 너무 이상해서 아무 것도 알아 내지 못합니다.Eclipse가 프로그램 실행 중간에 영원히 실행됩니다.
첫째, 여기 내 코드는 http://pastebin.com/JCaW53GM입니다.
나는 Project Euler's problem 96을 해결하려고합니다. 즉 Knuth의 Dancing Links를 사용하여 Sudoku 해결사를 만들려고합니다. 그 --- 아무것도 후
start search
before calling search(0 + 1)
start search
before calling search(1 + 1)
start search
before calling search(2 + 1)
start search
before calling search(3 + 1)
start search
before calling search(4 + 1)
start search
before calling search(5 + 1)
start search
before calling search(6 + 1)
start search
before calling search(7 + 1)
start search
before calling search(8 + 1)
start search
: 나는이 프로그램을 실행할 때마다
private static void search(int k) {
System.out.println("start search");
if (masterHeader.right == masterHeader) {
return;
}
// choose column
Column c = new Column("");
int s = Integer.MAX_VALUE;
for (Column j = (Column) masterHeader.right; j != masterHeader;
j = (Column) j.right) {
if (j.size < s) {
c = j;
s = j.size;
}
}
// dancing links
c.cover();
for (Datum r = c.bottom; r != c; r = r.bottom) {
o[k] = r;
for (Datum j = r.right; j != r; j = r.right) {
j.column.cover();
}
System.out.println("before calling search(" + k + " + 1)");
search(k + 1);
r = o[k];
c = r.column;
for (Datum j = r.left; j != r; j = j.left) {
j.uncover();
}
}
c.uncover();
}
, 나는 다음과 같은 출력을 얻을 : 많은 준비 후,이 절차는 문제를 해결하기 위해 가정된다. 오류가없고 오버플로가 없으며 Eclipse는 계속 영원히 계속 실행됩니다. 나는 이것이 무엇을 의미하는지 전혀 모른다. 나는 그것이 검색에서 멈춘다는 사실을 꽤 확신한다. (9) 내 코드의 많은 부분과 관련이있다. 그러나 오류가 없으며 나는 손실에 처해 있습니다.
누구나 나를 밝힐 수 있습니까? Eclipse는 무엇을 원합니까? 나는 무엇을 잘못 했는가?
편집 : Gaaah! 나는 출력의 마지막 "검색 시작"을 완전히 간과했다. 그것은 나를 혼란스럽게 만들었다. 나는 너무 피곤했다 ... 어쨌든, 너를 괴롭히는 것에 대해 모두에게 미안. 네, 분명 무한 루프의 단순한 경우입니다. 내가 직접 디버깅 할 수 있기를 바랍니다.
코드에 연결하는 대신 게시물의 해당 부분을 게시물에 포함하십시오. – rgettman
Eclipse 이슈라고 생각하는 것 같군요. 대신 명령 줄이나 DrJava (또는 경량 Java 편집기)에서 실행 해 보셨습니까? – Coffee
그것은 무한 루프라고합니다. 만족스럽지 않은 루프 종료 조건이있어 루프가 계속 무기한 실행됩니다. 디버거를 시작하면됩니다. – gknicker