SolveSudoku index wychodzi poza zakres

0

Mam problem z zaimplementowaniem algorytmu. Cały czas wyrzuca mi: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9. Sprawdziłam to w metodach w klasie tablica. W przypadku pętli nie ma błędów. Indeks musi być mniejszy niż 9. Prawdopodobnie w solve () lub navigate () jest coś złego, ale nie mogę tego znaleźć. Może ktoś inny zauważy co jest nie tak .

` public void navigate(int row, int column) {
if (column < 8) {
solve(row, column + 1);
} else {
solve(row + 1, 0);
}
}

public void solve(int row, int column) {
if (row > 8){
display();
}
if (tablica1[row][column] != 0) {
navigate(row, column);
}
else {
for (int ctr = 1; ctr <= 9; ctr++){
if ((checkrow(row, ctr) ) && (checkcolumn(column, ctr) ) && (checkgrid(row, column, ctr) )) {
tablica1[row][column] = ctr;
navigate(row, column);
}
}
tablica1[row][column] = 0;
}`

cały kod> https://ghostbin.com/paste/tto5f

0
Bogaty Orzeł napisał(a):

Mam problem z zaimplementowaniem algorytmu. Cały czas wyrzuca mi: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9. Sprawdziłam to w metodach w klasie tablica. W przypadku pętli nie ma błędów. Indeks musi być mniejszy niż 9. Prawdopodobnie w solve () lub navigate () jest coś złego, ale nie mogę tego znaleźć. Może ktoś inny zauważy co jest nie tak .

W metodzie navigate wywołujesz solve(row + 1, 0);, a tam jest sprawdzany warunek if (tablica1[row][column] != 0), bez sprawdzenia czy nowe row jest w zakresie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1