Las reglas de Conway's Game of Life no se aplican correctamente

Actualmente estoy empezando a aprender Java y he intentado recrear el Juego de la vida de Conway. Mi código funciona a medida que las células mueren y nacen, pero no parecen seguir las reglas previstas. Estoy usando los siguientes 2 métodos para aplicar las reglas:

public boolean nextState( int row, int col )
{
    if(a[row][col]==false)                                          //dead cells
    {
        int neighbors=0;
        for(int r=row-1; r<=row+1; r++)
        {
            for(int c=col-1; c<=col+1; c++)
            {
                if(r>=0 && c>=0 && r<a.length && c<a[0].length)        //exclude edges
                {
                    if(a[r][c])
                    {
                       neighbors++;
                    }
                }
            }
        }
        if(neighbors==3)
        {
            return true;
        }
        else 
        {
            return false;
        }
    }
    else                                                            //alive cells
    {
        int neighbors=-1;
        for(int r=row-1; r<=row+1; r++)
        {
            for(int c=col-1; c<=col+1; c++)
            {
                if(r>=0 && c>=0 && r<a.length && c<a[0].length)    //exclude edges
                {
                    if(a[r][c])
                    {
                        neighbors++;
                    }
                }
            }
        }
        if(neighbors==3 || neighbors==2)
        {
            return true;
        }
        else 
        {
            return false;
        }
    }
}

public void nextGeneration()
{
    for(int r=0; r<a.length; r++)
    {
        for(int c=0; c<a[0].length; c++)
        {
            a[r][c]=nextState(r,c);
        }
    }
}

nextState devuelve si la celda a [fila] [col] está muerta o viva en la próxima generación, dependiendo de su estado actual y de la cantidad de vecinos vivos.

nextGeneration aplica nextState a todas las celdas.

Estoy luchando por darme cuenta de por qué el estado de ciertas celdas cambia, pero no de la manera prevista.

Respuesta 1

Quiero verificar cuánta memoria se usa en mi aplicación Java, y luego usé: System.out.println ("Memoria libre (bytes):" + Runtime.getRuntime (). FreeMemory () / (1024 * 1024 * 1024 )); ...

Estoy haciendo ingeniería inversa de algún código que está descifrando datos, con la esperanza de poder volver a cifrarlos y obtener los mismos datos con los que comenzó, por razones que harían esta pregunta demasiado larga y ...

La asignación es simple, todo lo que tenemos que hacer es hacer que el código cree una ventana con un panel rojo con un solo botón y etiqueta. Aquí está el código hasta ahora, así como la clase de probador. Tengo la etiqueta para ...

Estoy tratando de desactivar la exposición automática, el enfoque automático y el balance de blancos automático en la muestra Camera2Basic de Google. Aquí está mi código: private void disableAutomatics () {try {mPreviewRequestBuilder ....