안녕하세요 좋은 사람들이 stackoverflow! 나는 이해할 수없는 이상한 문제가있다.배열 인덱스가 범위를 벗어 났습니까? 방법?
private static void resi(int [][] matrica,int row, int col) {
if (matrica[row][col] != 0) {
next(matrica,row, col); // <--- this the line that first throws the exception
} else {
for (int num = 1; num < 10; num++) {
if (checkRow(matrica,row, num) && checkColumn(matrica,col, num) && checkBox(matrica,row, col, num)) {
matrica2[row][col] = num;
matrica4[row][col] = num;
next(matrica,row, col);
}
}
matrica[row][col] = 0;
}
}
그리고 다른 하나 : 나는 문제가있다 내 두 가지 방법 포스트거야
private static void next(int [][] matrica2,int row, int col) {
if (col < 8) {
resi(matrica2,row, col + 1);
} else {
resi(matrica2,row + 1, 0);
}
}
을 그래서, 내가 온라인으로 발견 된 일부 코드를 기반으로 스도쿠 솔버를 만들고있어. 이제 프로그램을 디버깅하려고 할 때 선의 일부를 멋지게 처리 할 수 있지만 (예상대로 작동 함) 일단 프로그램이 "resi"메서드에서 "next"메서드 호출에 도달하면 배열 인덱스와 충돌합니다 out of bounds 예외입니다. 디버깅하지 않고 프로그램을 실행하려고하면 동일한 메소드 호출에서 NetBeans의 출력 탭에 "배열 인덱스가 범위를 벗어남"예외가 반복적으로 발생합니다.
나는 그 오류의 원인을 알지 못합니다. 늘어나는만큼 알 수 있듯이, 행과 열은 0-8 범위를 넘지 않습니다 ... 2D 배열에 문제가 있습니까? 감사합니다.
편집 1 :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at SudokuGame.Main.resi(Main.java:88)
at SudokuGame.Main.next(Main.java:107)
at SudokuGame.Main.resi(Main.java:89)
at SudokuGame.Main.next(Main.java:105)
at SudokuGame.Main.resi(Main.java:95)
... 그리고 예외를 던지는는 코드를 통해가는 것처럼 보인다 유지하기 때문에 그래서, 그들은 반복된다?
당신은 우리에게 배열의 초기화를 게재 할 수 있습니까? –
또한 예외가있는 정확한 행을 표시 할 수 있습니다. 나는 당신이 이것을하면 거의 즉각적인 해결책을 보장 할 수 있다고 생각합니다. 건배. –
btw resi-method에서 matrica2와 matrica4는 무엇입니까? – JohnnyAW