Cómo hacer sentencias if más pequeñas y evitar usar demasiados bucles por la misma causa en java

Este código es para una de mis tareas (conectar cuatro). Necesito hacer que este código tenga menos de 25 líneas y también hacer que las declaraciones 'if' sean más cortas. Además, el tablero tiene 6 filas y 7 columnas. Mi código está tratando de averiguar si una persona ha ganado.

He intentado fusionar todos los bucles en un bucle, pero eso no me da una respuesta correcta.

public static boolean determineWin(String[][] board) {
    boolean won = false;

    for (int i = 0; i < 6; i++) {
        for (int j = 0; j < 4; j++) {
            if (board[i][j] != ". ") {
                if (board[i][j].equals(board[i][j+1]) && board[i][j+1].equals(board[i][j+2]) && board[i][j+2].equals(board[i][j+3])) {
                    won = true;
                    break;
                }
            }
        }
    }

    for (int i = 5; i > 2; i--) {
        for (int j = 6; j > 2; j--) {
            if (board[i][j] != ". ") {
                if (board[i][j].equals(board[i-1][j-1]) && board[i-1][j-1].equals(board[i-2][j-2]) && board[i-2][j-2].equals(board[i-3][j-3])){
                    won = true;
                    break;
                }
            }
        }

        for (int j = 0; j < 4; j++) {
            if (board[i][j] != ". ") {
                if (board[i][j].equals(board[i-1][j+1]) && board[i-1][j+1].equals(board[i-2][j+2]) && board[i-2][j+2].equals(board[i-3][j+3])){
                    won = true;
                    break;
                }
            }
        }

        for (int j = 0; j < 7; j++) {
            if (board[i][j] != ". ") {
                if (board[i][j].equals(board[i-1][j]) && board[i-1][j].equals(board[i-2][j]) && board[i-2][j].equals(board[i-3][j])){
                    won = true;
                    break;
                }
            }
        }
    }

    return won;
}

El resultado debería ser el mismo que el código anterior, pero solo necesito que el código sea un poco más pequeño (25 líneas) y que las declaraciones if sean más cortas.

Respuesta 1

Recientemente tuve una pregunta de diseño de objeto / clase. El problema era este: "Tienes una universidad y tiene empleados, que pueden ser estudiantes o maestros". Me pidieron que diseñara solo el ...

Estoy probando un código donde tengo 2 métodos y una declaración en cada método está sincronizada. Private final Object obj1 = new Object (); Private final Object obj2 = new Object (); método público nulo1 (...

Tengo un diseño de actividad que llama a otro archivo xml como encabezado. Me gustaría obtener una referencia por id de una vista de imagen establecida en nav_header_main, pero no puedo alcanzarla. actividad_principal: <...

Posible duplicado: ¿Cómo hacer una consulta de límite en HQL? Tengo una tabla A de tamaño grande pero desconocido. Necesito recuperar resultados en lotes, es decir, 100 a la vez, de la tabla y realizar operaciones ...