Recursion stackOverflowError al encontrar celdas vacías en el juego Buscaminas

EDITAR: ¡RESUELTO! Simplemente olvidé incluir una declaración 'else' debajo de 'else if' que hace una declaración en blanco

Estoy usando Java, y estoy haciendo un juego de Buscaminas.

Estoy tratando de abrir todas las celdas vacías adyacentes cuando se hace clic en una celda vacía. He echado un vistazo a una pregunta similar en este sitio y no puedo ver dónde me estoy equivocando. Estoy obteniendo un stackOverflow.

Cualquier ayuda será apreciada.

A continuación, la matriz de 'botones' es una matriz de botones en 2D, y la matriz de 'celdas' es una matriz en 2D de objetos de celda (utilizada para determinar el estado de esa celda). Obviamente cada celda corresponde a un botón.

public void findEmptyCells(int i, int j) // this method is called when a cell is clicked, therefore all adjacent empty cells will be opened
{
    if (i >= 0 && j >= 0 && i < 9 && j < 9) //ie the block actually exists on the grid
    {
        if (cells[i][j].getAdjMines() == 0 && cells[i][j].getIsMine() == false && cells[i][j].getIsFlagged() == false && cells[i][j].getIsOpen() == false) //if cell is empty & not a mine & not flagged
        {
            buttons[i][j].setIcon(new ImageIcon("buttonImages/but" + cells[i][j].getAdjMines() + ".png")); //here the getAdjMines value will be 0, so the empty cell icon will be placed
            cells[i][j].setIsOpen(true); //for later, if we need to identify which cells are still unclicked

            //now to check all adjacent cells
            findEmptyCells(i - 1, j); //left 
            findEmptyCells(i + 1, j); //right 
            findEmptyCells(i, j + 1); //up
            findEmptyCells(i, j - 1); //down
            findEmptyCells(i - 1, j + 1); //up-left
            findEmptyCells(i + 1, j + 1); //up-right
            findEmptyCells(i - 1, j - 1); //down-left
            findEmptyCells(i + 1, j - 1); //down-right

        }
        else if (cells[i][j].getAdjMines() > 0)
        {
            buttons[i][j].setIcon(new ImageIcon("buttonImages/but" + cells[i][j].getAdjMines() + ".png"));
            cells[i][j].setIsOpen(true); //for later, if we need to identify which cells are still unclicked
            return;
        }

    }
    else
    {
      return;  
    }
}
Respuesta 1

He instalado maven 3.6.0 en mi mac usando homebrew. Cuando intento mvn --version en mi terminal, obtengo el Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T05: 41: 47 + 11: 00) ...

He escrito una aplicación web usando Java EE para alterar el contenido de una tabla. Para la autenticación del usuario, estoy usando las credenciales de la base de datos del usuario. Estoy creando la conexión JDBC usando estos ...

Tengo un cliente escrito en C # y un servidor en JAVA. Entonces, cuando intento conectarme, recibí un error en el servidor javax.net.ssl.SSLHandshakeException: no hay conjuntos de cifrado en común y en C # "EOF o 0 bytes". [C#]:...

Quiero crear una aplicación C ++ que invoque una función dentro de una aplicación Java en ejecución. Este es el código para mi aplicación Java: paquete me.jumpak.testapp; clase pública TestClass {...