Java. Can someone help me identify the mistake in the code


#1
public class Solution {
public boolean isValid(ArrayList<ArrayList<Character>> grid, int row, int col, char num){
    char n = num;
    // Check in row
    for(int j=0; j<9; j++){
        if(grid.get(row).get(j) == n){
            return false;
        }
    }
    // Check in column
    for(int i=0; i<9; i++){
        if(grid.get(i).get(col) == n){
            return false;
        }
    }
    // Check in the square box
    if(row<3 && col<3){
        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<3 && col<6){
        for(int i=0; i<3; i++){
            for(int j=3; j<6; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<3 && col<9){
        for(int i=0; i<3; i++){
            for(int j=6; j<9; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<6 && col<3){
        for(int i=3; i<6; i++){
            for(int j=0; j<3; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<6 && col<6){
        for(int i=3; i<6; i++){
            for(int j=3; j<6; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<6 && col<9){
        for(int i=3; i<6; i++){
            for(int j=6; j<9; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<9 && col<3){
        for(int i=6; i<9; i++){
            for(int j=0; j<3; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<9 && col<6){
        for(int i=6; i<9; i++){
            for(int j=3; j<6; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
    else if(row<9 && col<9){
        for(int i=6; i<9; i++){
            for(int j=6; j<9; j++){
                if(grid.get(i).get(j) == n){
                    return false;
                }
            }
        }
    }
   
    return true;

}
public void solveSudoku(ArrayList<ArrayList<Character>> a) {
    for(int i=0; i<9; i++){
        for(int j=0; j<9; j++){
            if(a.get(i).get(j) == '.'){
                for(char n='1'; n<='9'; n++){
                    if(isValid(a, i, j, n)){
                        a.get(i).set(j, n);
                        solveSudoku(a);
                        a.get(i).set(j, '.');
                    }
                }
                return;
            }
        }
    }

    // for(int i=0; i<9; i++){
    //     System.out.println(a.get(i));
    // }
    
}

}